From d1a1bde3aa5060b2eedfba87454d43bc5e3a607a Mon Sep 17 00:00:00 2001 From: zeng Date: Thu, 16 Oct 2025 11:39:38 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E6=AC=A1=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 +- Fableon.xcodeproj/project.pbxproj | 1234 +++++++++++++++++ Fableon/App/AppDelegate+FAConfig.swift | 33 + Fableon/App/AppDelegate.swift | 52 + Fableon/App/SceneDelegate.swift | 54 + .../Controller/FANavigationController.swift | 43 + .../Base/Controller/FATabBarController.swift | 64 + .../Base/Controller/FAViewController.swift | 93 ++ Fableon/Base/Define/FADefine.swift | 39 + .../CGMutablePath+FARoundedCorner.swift | 65 + Fableon/Base/Extension/Dictionary+FAAdd.swift | 23 + Fableon/Base/Extension/Font+FAAdd.swift | 24 + Fableon/Base/Extension/String+FAAdd.swift | 41 + .../Base/Extension/UI/SwiftUIExtension.swift | 80 ++ .../Extension/UINavigationBar+FAAdd.swift | 49 + Fableon/Base/Extension/UIScreen+FAAdd.swift | 40 + .../Extension/UIScrollView+FARefresh.swift | 70 + .../Base/Extension/UIStackView+FAAdd.swift | 21 + Fableon/Base/Extension/UIView+FAAdd.swift | 95 ++ .../Base/Extension/UserDefaults+FAAdd.swift | 39 + Fableon/Base/Request/FAAPI/FAAPI.swift | 161 +++ Fableon/Base/Request/FAAPIPath.swift | 20 + Fableon/Base/Request/FACryptorService.swift | 95 ++ Fableon/Base/Request/FANetworkManager.swift | 232 ++++ Fableon/Base/Request/FANetworkMonitor.swift | 73 + Fableon/Base/View/FACollectionView.swift | 22 + Fableon/Base/View/FAImageView.swift | 101 ++ Fableon/Base/View/FAPanModalContentView.swift | 78 ++ Fableon/Base/View/FAScrollView.swift | 21 + Fableon/Base/View/FATableView.swift | 49 + Fableon/Base/View/FATableViewCell.swift | 47 + .../Base/WebView/FAAppWebViewController.swift | 68 + .../WebView/FABaseWebViewController.swift | 112 ++ Fableon/Base/WebView/FAWebView.swift | 147 ++ .../Class/Home/C/FAHomeViewController.swift | 247 ++++ .../Class/Home/C/FASearchViewController.swift | 113 ++ Fableon/Class/Home/M/FAHomeItem.swift | 23 + Fableon/Class/Home/M/FAHomeModuleItem.swift | 53 + .../Home/UI/FAHomeMustSeeContentView.swift | 43 + .../Home/UI/FAHomeMustSeeShortView.swift | 80 ++ Fableon/Class/Home/UI/FAHomeMustSeeView.swift | 96 ++ Fableon/Class/Home/UI/FAHomeNewView.swift | 87 ++ .../Home/UI/FAHomeRecommendedItemView.swift | 54 + Fableon/Class/Home/V/FAHomeBannerCell.swift | 54 + .../Home/V/FAHomeBannerContentCell.swift | 89 ++ .../Home/V/FAHomeMustSeeContentCell.swift | 48 + .../Class/Home/V/FAHomeNewContentCell.swift | 35 + .../Class/Home/V/FAHomeRecommendedCell.swift | 42 + .../Class/Home/V/FAHomeRecommendedCell.xib | 91 ++ .../Class/Home/V/FAHomeSectionTitleView.swift | 17 + .../Class/Home/V/FAHomeSectionTitleView.xib | 38 + Fableon/Class/Home/V/FASearchHomeView.swift | 95 ++ Fableon/Class/Home/V/FASearchInputView.swift | 108 ++ .../Class/Home/V/FASearchRecommendCell.swift | 55 + .../Class/Home/V/FASearchRecommendCell.xib | 116 ++ .../Class/Home/V/FASearchRecommendView.swift | 99 ++ Fableon/Class/Home/V/FASearchRecordCell.swift | 26 + Fableon/Class/Home/V/FASearchRecordCell.xib | 46 + Fableon/Class/Home/V/FASearchRecordView.swift | 135 ++ Fableon/Class/Home/V/FASearchResultCell.swift | 52 + Fableon/Class/Home/V/FASearchResultCell.xib | 99 ++ Fableon/Class/Home/V/FASearchResultView.swift | 113 ++ Fableon/Class/Home/VM/FAHomeViewModel.swift | 115 ++ Fableon/Class/Home/VM/FASearchViewModel.swift | 57 + .../Class/Me/C/FAAboutViewController.swift | 106 ++ .../Class/Me/C/FAFeedbackViewController.swift | 30 + Fableon/Class/Me/C/FAMeViewController.swift | 188 +++ .../Class/Me/C/FASettingViewController.swift | 26 + Fableon/Class/Me/M/FAMeItemModel.swift | 25 + Fableon/Class/Me/V/FAAboutCell.swift | 33 + Fableon/Class/Me/V/FAAboutCell.xib | 46 + Fableon/Class/Me/V/FAAboutHeaderView.swift | 68 + Fableon/Class/Me/V/FAMeCell.swift | 36 + Fableon/Class/Me/V/FAMeCell.xib | 61 + Fableon/Class/Me/V/FAMeHeaderView.swift | 78 ++ .../MyShort/C/FACollectViewController.swift | 193 +++ .../MyShort/C/FAHistoryViewController.swift | 126 ++ Fableon/Class/MyShort/V/FACollectCell.swift | 51 + Fableon/Class/MyShort/V/FACollectCell.xib | 93 ++ Fableon/Class/MyShort/V/FAHistoryCell.swift | 35 + Fableon/Class/MyShort/V/FAHistoryCell.xib | 77 + .../Class/Player/M/FAShortDetailModel.swift | 23 + Fableon/Class/Player/M/FAShortPlayModel.swift | 39 + Fableon/Class/Player/M/FAVideoInfoModel.swift | 25 + .../Class/Player/UI/FAPlayerEpUIButton.swift | 46 + Fableon/Class/Player/V/FAEpMenuView.swift | 187 +++ Fableon/Class/Player/V/FAEpSelectorCell.swift | 41 + Fableon/Class/Player/V/FAEpSelectorCell.xib | 40 + Fableon/Class/Player/V/FAEpSelectorView.swift | 259 ++++ .../Class/Player/V/FAPlayerDetailCell.swift | 42 + .../Player/V/FAPlayerDetailControlView.swift | 235 ++++ .../Class/Player/V/FAPlayerProgressView.swift | 211 +++ .../VC/FAPlayerDetailViewController.swift | 150 ++ .../Player/VM/FAShortDetailViewModel.swift | 72 + .../C/FARecommendViewController.swift | 73 + .../Recommend/V/FARecommendPlayerCell.swift | 35 + .../V/FARecommendPlayerControlView.swift | 237 ++++ .../Recommend/VM/FARecommendViewModel.swift | 84 ++ Fableon/Libs/Empty/FAEmpty.swift | 27 + .../Libs/FADeviceId/FADeviceIDManager.swift | 26 + .../Libs/FADeviceId/FAKeychainHelper.swift | 62 + Fableon/Libs/FALocalized/FALocalized.swift | 110 ++ Fableon/Libs/FALogin/FALogin.swift | 60 + Fableon/Libs/FALogin/FATokenModel.swift | 35 + Fableon/Libs/FALogin/FAUserInfo.swift | 49 + Fableon/Libs/FATool/FATool.swift | 54 + .../FSPagerView/FAPagerViewTransformer.swift | 20 + .../Libs/FSPagerView/FSPagerSwiftUIView.swift | 138 ++ Fableon/Libs/HUD/FAHUD.swift | 21 + Fableon/Libs/HUD/FAToast.swift | 22 + .../FAWaterfallFlowLayout.swift | 191 +++ .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 14 + .../AppIcon.appiconset/Fableon_logo.jpg | Bin 0 -> 428680 bytes Fableon/Source/Assets.xcassets/Contents.json | 6 + .../LaunchScreen/Contents.json | 6 + ...c6037d6655e0b7054f37a2f0d4a578175 1@2x.png | Bin 0 -> 961083 bytes ...c6037d6655e0b7054f37a2f0d4a578175 1@3x.png | Bin 0 -> 1675975 bytes .../launch_bg_image.imageset/Contents.json | 22 + .../Contents.json | 22 + .../Fableon_圆角logo@2x.png | Bin 0 -> 90892 bytes .../Fableon_圆角logo@3x.png | Bin 0 -> 185609 bytes .../Contents.json | 22 + .../Fableon_圆角logo@2x.png | Bin 0 -> 7669 bytes .../Fableon_圆角logo@3x.png | Bin 0 -> 14309 bytes .../Contents.json | 22 + .../Diverse themes@2x.png | Bin 0 -> 121285 bytes .../Diverse themes@3x.png | Bin 0 -> 241250 bytes .../Contents.json | 22 + .../High-definition playback@2x.png | Bin 0 -> 86123 bytes .../High-definition playback@3x.png | Bin 0 -> 170814 bytes .../Contents.json | 22 + .../Group 2378@2x.png | Bin 0 -> 17612 bytes .../Group 2378@3x.png | Bin 0 -> 29138 bytes .../Contents.json | 22 + .../Group 2378@2x.png | Bin 0 -> 5545 bytes .../Group 2378@3x.png | Bin 0 -> 9156 bytes .../color/#000000.colorset/Contents.json | 20 + .../color/#000000_0.75.colorset/Contents.json | 20 + .../color/#0D0D0D.colorset/Contents.json | 20 + .../color/#20A2FF.colorset/Contents.json | 20 + .../color/#333333.colorset/Contents.json | 20 + .../color/#35A4FE.colorset/Contents.json | 20 + .../color/#3769FC.colorset/Contents.json | 20 + .../color/#4D4A4A.colorset/Contents.json | 20 + .../color/#52A2F1.colorset/Contents.json | 20 + .../color/#5CA8FF_0.2.colorset/Contents.json | 20 + .../color/#6D6D6D_0.4.colorset/Contents.json | 20 + .../color/#777777.colorset/Contents.json | 20 + .../color/#81CAFF.colorset/Contents.json | 20 + .../color/#8B8B8B.colorset/Contents.json | 20 + .../color/#999999.colorset/Contents.json | 20 + .../color/#A8DBFF.colorset/Contents.json | 20 + .../color/#BEDFFF.colorset/Contents.json | 20 + .../color/#C7DEF5.colorset/Contents.json | 20 + .../color/#D9D9D9.colorset/Contents.json | 20 + .../color/#DDEDFD.colorset/Contents.json | 20 + .../color/#F8D01D.colorset/Contents.json | 20 + .../color/#F94F7F.colorset/Contents.json | 20 + .../color/#FE6C05.colorset/Contents.json | 20 + .../color/#FFFFFF.colorset/Contents.json | 20 + .../color/#FFFFFF_0.25.colorset/Contents.json | 20 + .../Assets.xcassets/color/Contents.json | 6 + .../Assets.xcassets/image/Contents.json | 6 + .../image/Frame 2914.imageset/Contents.json | 22 + .../Frame 2914.imageset/Frame 2914@2x.png | Bin 0 -> 642 bytes .../Frame 2914.imageset/Frame 2914@3x.png | Bin 0 -> 899 bytes .../image/Frame 2915.imageset/Contents.json | 22 + .../Frame 2915.imageset/Frame 2914@2x.png | Bin 0 -> 806 bytes .../Frame 2915.imageset/Frame 2914@3x.png | Bin 0 -> 1427 bytes .../image/Frame 2916.imageset/Contents.json | 22 + .../Frame 2916.imageset/Frame 2916@2x.png | Bin 0 -> 530 bytes .../Frame 2916.imageset/Frame 2916@3x.png | Bin 0 -> 786 bytes .../image/Frame 2920.imageset/Contents.json | 22 + .../Frame 2920.imageset/Frame 2920@2x.png | Bin 0 -> 285 bytes .../Frame 2920.imageset/Frame 2920@3x.png | Bin 0 -> 402 bytes .../image/Frame 2921.imageset/Contents.json | 22 + .../Frame 2921.imageset/Frame 2921@2x.png | Bin 0 -> 292 bytes .../Frame 2921.imageset/Frame 2921@3x.png | Bin 0 -> 408 bytes .../image/Frame 3008.imageset/Contents.json | 22 + .../Frame 3008.imageset/Frame 3008@2x.png | Bin 0 -> 329 bytes .../Frame 3008.imageset/Frame 3008@3x.png | Bin 0 -> 437 bytes .../image/Frame 3009.imageset/Contents.json | 22 + .../Frame 3009.imageset/Frame 3009@2x.png | Bin 0 -> 235 bytes .../Frame 3009.imageset/Frame 3009@3x.png | Bin 0 -> 280 bytes .../image/Frame 3011.imageset/Contents.json | 25 + .../Frame 3011.imageset/Frame 3011@2x.png | Bin 0 -> 268 bytes .../Frame 3011.imageset/Frame 3011@3x.png | Bin 0 -> 319 bytes .../image/Frame 3012.imageset/Contents.json | 22 + .../Frame 3012.imageset/Frame 3011@2x.png | Bin 0 -> 257 bytes .../Frame 3012.imageset/Frame 3011@3x.png | Bin 0 -> 317 bytes .../image/Frame 3015.imageset/Contents.json | 22 + .../Frame 3015.imageset/Frame 3015@2x.png | Bin 0 -> 241 bytes .../Frame 3015.imageset/Frame 3015@3x.png | Bin 0 -> 301 bytes .../image/Search.imageset/Contents.json | 22 + .../image/Search.imageset/Search@2x.png | Bin 0 -> 572 bytes .../image/Search.imageset/Search@3x.png | Bin 0 -> 805 bytes .../image/Thalire.imageset/Contents.json | 22 + .../image/Thalire.imageset/Thalire@2x.png | Bin 0 -> 2567 bytes .../image/Thalire.imageset/Thalire@3x.png | Bin 0 -> 4183 bytes .../image/__question.imageset/Contents.json | 22 + .../__question.imageset/__question@2x.png | Bin 0 -> 32305 bytes .../__question.imageset/__question@3x.png | Bin 0 -> 55210 bytes .../image/__shop-72.imageset/Contents.json | 22 + .../image/__shop-72.imageset/__shop-72@2x.png | Bin 0 -> 33543 bytes .../image/__shop-72.imageset/__shop-72@3x.png | Bin 0 -> 52957 bytes .../collect_star_icon.imageset/Contents.json | 22 + .../collect_star_icon.imageset/Star 19@2x.png | Bin 0 -> 526 bytes .../collect_star_icon.imageset/Star 19@3x.png | Bin 0 -> 762 bytes .../Contents.json | 22 + .../Star 20@2x.png | Bin 0 -> 663 bytes .../Star 20@3x.png | Bin 0 -> 934 bytes .../image/done.imageset/Contents.json | 25 + .../image/done.imageset/done@2x.png | Bin 0 -> 322 bytes .../image/done.imageset/done@3x.png | Bin 0 -> 469 bytes .../image/icon_about.imageset/Contents.json | 22 + .../icon_about.imageset/icon_about@2x.png | Bin 0 -> 721 bytes .../icon_about.imageset/icon_about@3x.png | Bin 0 -> 1061 bytes .../icon_feedback.imageset/Contents.json | 22 + .../icon_feedback@2x.png | Bin 0 -> 633 bytes .../icon_feedback@3x.png | Bin 0 -> 803 bytes .../image/icon_privacy.imageset/Contents.json | 22 + .../icon_privacy.imageset/icon_privacy@2x.png | Bin 0 -> 666 bytes .../icon_privacy.imageset/icon_privacy@3x.png | Bin 0 -> 946 bytes .../image/icon_setting.imageset/Contents.json | 22 + .../icon_setting.imageset/icon_setting@2x.png | Bin 0 -> 810 bytes .../icon_setting.imageset/icon_setting@3x.png | Bin 0 -> 1253 bytes .../image/icon_user.imageset/Contents.json | 22 + .../image/icon_user.imageset/icon_user@2x.png | Bin 0 -> 520 bytes .../image/icon_user.imageset/icon_user@3x.png | Bin 0 -> 736 bytes .../image/icon_visit.imageset/Contents.json | 22 + .../icon_visit.imageset/icon_visit@2x.png | Bin 0 -> 472 bytes .../icon_visit.imageset/icon_visit@3x.png | Bin 0 -> 668 bytes .../logo_image_01.imageset/Contents.json | 22 + .../Fableon_圆角logo 2@2x.png | Bin 0 -> 33192 bytes .../Fableon_圆角logo 2@3x.png | Bin 0 -> 64531 bytes .../image/pause_icon.imageset/Contents.json | 22 + .../image/pause_icon.imageset/pause@2x.png | Bin 0 -> 518 bytes .../image/pause_icon.imageset/pause@3x.png | Bin 0 -> 740 bytes .../placeholder_image.imageset/Contents.json | 22 + .../首页new模块占位图@2x.png | Bin 0 -> 11093 bytes .../首页new模块占位图@3x.png | Bin 0 -> 16968 bytes .../image/play_icon_01.imageset/Contents.json | 22 + .../image/play_icon_01.imageset/play@2x.png | Bin 0 -> 997 bytes .../image/play_icon_01.imageset/play@3x.png | Bin 0 -> 1390 bytes .../image/删除.imageset/Contents.json | 22 + .../image/删除.imageset/删除@2x.png | Bin 0 -> 472 bytes .../image/删除.imageset/删除@3x.png | Bin 0 -> 629 bytes .../历史记录_icon.imageset/Contents.json | 25 + .../历史记录_icon@2x.png | Bin 0 -> 769 bytes .../历史记录_icon@3x.png | Bin 0 -> 1088 bytes .../image/编辑_icon.imageset/Contents.json | 25 + .../image/编辑_icon.imageset/编辑_icon@2x.png | Bin 0 -> 568 bytes .../image/编辑_icon.imageset/编辑_icon@3x.png | Bin 0 -> 779 bytes .../image/背景.imageset/Contents.json | 22 + .../image/背景.imageset/背景@2x.png | Bin 0 -> 808607 bytes .../image/背景.imageset/背景@3x.png | Bin 0 -> 1677759 bytes .../image/路径 264.imageset/Contents.json | 22 + .../image/路径 264.imageset/删除@2x.png | Bin 0 -> 385 bytes .../image/路径 264.imageset/删除@3x.png | Bin 0 -> 498 bytes .../image/首页搜索i_ic.imageset/Contents.json | 22 + .../首页搜索i_ic.imageset/首页搜索i_ic@2x.png | Bin 0 -> 1564 bytes .../首页搜索i_ic.imageset/首页搜索i_ic@3x.png | Bin 0 -> 2297 bytes .../Assets.xcassets/tabbar/Contents.json | 6 + .../Contents.json | 25 + .../收藏_collect_off@2x.png | Bin 0 -> 1050 bytes .../收藏_collect_off@3x.png | Bin 0 -> 1482 bytes .../Contents.json | 25 + .../收藏_collect_on@2x.png | Bin 0 -> 977 bytes .../收藏_collect_on@3x.png | Bin 0 -> 1336 bytes .../tabbar_home_icon.imageset/Contents.json | 25 + .../首页_home_off@2x.png | Bin 0 -> 931 bytes .../首页_home_off@3x.png | Bin 0 -> 1266 bytes .../Contents.json | 25 + .../首页_home_on@2x.png | Bin 0 -> 782 bytes .../首页_home_on@3x.png | Bin 0 -> 1045 bytes .../tabbar_me_icon.imageset/Contents.json | 25 + .../个人中心_me_off@2x.png | Bin 0 -> 1299 bytes .../个人中心_me_off@3x.png | Bin 0 -> 1841 bytes .../Contents.json | 25 + .../个人中心_me_on@2x.png | Bin 0 -> 1127 bytes .../个人中心_me_on@3x.png | Bin 0 -> 1526 bytes .../Contents.json | 25 + .../推荐_reco_off@2x.png | Bin 0 -> 1027 bytes .../推荐_reco_off@3x.png | Bin 0 -> 1474 bytes .../Contents.json | 25 + .../推荐_reco_on@2x.png | Bin 0 -> 825 bytes .../推荐_reco_on@3x.png | Bin 0 -> 1139 bytes .../Source/Base.lproj/LaunchScreen.storyboard | 93 ++ Fableon/Source/Fableon-Bridging-Header.h | 5 + Fableon/Source/Info.plist | 23 + Fableon/Source/en.lproj/Localizable.strings | 18 + Podfile | 37 + Podfile.lock | 215 +++ 294 files changed, 11637 insertions(+), 2 deletions(-) create mode 100644 Fableon.xcodeproj/project.pbxproj create mode 100644 Fableon/App/AppDelegate+FAConfig.swift create mode 100644 Fableon/App/AppDelegate.swift create mode 100644 Fableon/App/SceneDelegate.swift create mode 100644 Fableon/Base/Controller/FANavigationController.swift create mode 100644 Fableon/Base/Controller/FATabBarController.swift create mode 100644 Fableon/Base/Controller/FAViewController.swift create mode 100644 Fableon/Base/Define/FADefine.swift create mode 100644 Fableon/Base/Extension/CGMutablePath+FARoundedCorner.swift create mode 100644 Fableon/Base/Extension/Dictionary+FAAdd.swift create mode 100644 Fableon/Base/Extension/Font+FAAdd.swift create mode 100644 Fableon/Base/Extension/String+FAAdd.swift create mode 100644 Fableon/Base/Extension/UI/SwiftUIExtension.swift create mode 100644 Fableon/Base/Extension/UINavigationBar+FAAdd.swift create mode 100644 Fableon/Base/Extension/UIScreen+FAAdd.swift create mode 100644 Fableon/Base/Extension/UIScrollView+FARefresh.swift create mode 100644 Fableon/Base/Extension/UIStackView+FAAdd.swift create mode 100644 Fableon/Base/Extension/UIView+FAAdd.swift create mode 100644 Fableon/Base/Extension/UserDefaults+FAAdd.swift create mode 100644 Fableon/Base/Request/FAAPI/FAAPI.swift create mode 100644 Fableon/Base/Request/FAAPIPath.swift create mode 100644 Fableon/Base/Request/FACryptorService.swift create mode 100644 Fableon/Base/Request/FANetworkManager.swift create mode 100644 Fableon/Base/Request/FANetworkMonitor.swift create mode 100644 Fableon/Base/View/FACollectionView.swift create mode 100644 Fableon/Base/View/FAImageView.swift create mode 100644 Fableon/Base/View/FAPanModalContentView.swift create mode 100644 Fableon/Base/View/FAScrollView.swift create mode 100644 Fableon/Base/View/FATableView.swift create mode 100644 Fableon/Base/View/FATableViewCell.swift create mode 100644 Fableon/Base/WebView/FAAppWebViewController.swift create mode 100644 Fableon/Base/WebView/FABaseWebViewController.swift create mode 100644 Fableon/Base/WebView/FAWebView.swift create mode 100644 Fableon/Class/Home/C/FAHomeViewController.swift create mode 100644 Fableon/Class/Home/C/FASearchViewController.swift create mode 100644 Fableon/Class/Home/M/FAHomeItem.swift create mode 100644 Fableon/Class/Home/M/FAHomeModuleItem.swift create mode 100644 Fableon/Class/Home/UI/FAHomeMustSeeContentView.swift create mode 100644 Fableon/Class/Home/UI/FAHomeMustSeeShortView.swift create mode 100644 Fableon/Class/Home/UI/FAHomeMustSeeView.swift create mode 100644 Fableon/Class/Home/UI/FAHomeNewView.swift create mode 100644 Fableon/Class/Home/UI/FAHomeRecommendedItemView.swift create mode 100644 Fableon/Class/Home/V/FAHomeBannerCell.swift create mode 100644 Fableon/Class/Home/V/FAHomeBannerContentCell.swift create mode 100644 Fableon/Class/Home/V/FAHomeMustSeeContentCell.swift create mode 100644 Fableon/Class/Home/V/FAHomeNewContentCell.swift create mode 100644 Fableon/Class/Home/V/FAHomeRecommendedCell.swift create mode 100644 Fableon/Class/Home/V/FAHomeRecommendedCell.xib create mode 100644 Fableon/Class/Home/V/FAHomeSectionTitleView.swift create mode 100644 Fableon/Class/Home/V/FAHomeSectionTitleView.xib create mode 100644 Fableon/Class/Home/V/FASearchHomeView.swift create mode 100644 Fableon/Class/Home/V/FASearchInputView.swift create mode 100644 Fableon/Class/Home/V/FASearchRecommendCell.swift create mode 100644 Fableon/Class/Home/V/FASearchRecommendCell.xib create mode 100644 Fableon/Class/Home/V/FASearchRecommendView.swift create mode 100644 Fableon/Class/Home/V/FASearchRecordCell.swift create mode 100644 Fableon/Class/Home/V/FASearchRecordCell.xib create mode 100644 Fableon/Class/Home/V/FASearchRecordView.swift create mode 100644 Fableon/Class/Home/V/FASearchResultCell.swift create mode 100644 Fableon/Class/Home/V/FASearchResultCell.xib create mode 100644 Fableon/Class/Home/V/FASearchResultView.swift create mode 100644 Fableon/Class/Home/VM/FAHomeViewModel.swift create mode 100644 Fableon/Class/Home/VM/FASearchViewModel.swift create mode 100644 Fableon/Class/Me/C/FAAboutViewController.swift create mode 100644 Fableon/Class/Me/C/FAFeedbackViewController.swift create mode 100644 Fableon/Class/Me/C/FAMeViewController.swift create mode 100644 Fableon/Class/Me/C/FASettingViewController.swift create mode 100644 Fableon/Class/Me/M/FAMeItemModel.swift create mode 100644 Fableon/Class/Me/V/FAAboutCell.swift create mode 100644 Fableon/Class/Me/V/FAAboutCell.xib create mode 100644 Fableon/Class/Me/V/FAAboutHeaderView.swift create mode 100644 Fableon/Class/Me/V/FAMeCell.swift create mode 100644 Fableon/Class/Me/V/FAMeCell.xib create mode 100644 Fableon/Class/Me/V/FAMeHeaderView.swift create mode 100644 Fableon/Class/MyShort/C/FACollectViewController.swift create mode 100644 Fableon/Class/MyShort/C/FAHistoryViewController.swift create mode 100644 Fableon/Class/MyShort/V/FACollectCell.swift create mode 100644 Fableon/Class/MyShort/V/FACollectCell.xib create mode 100644 Fableon/Class/MyShort/V/FAHistoryCell.swift create mode 100644 Fableon/Class/MyShort/V/FAHistoryCell.xib create mode 100644 Fableon/Class/Player/M/FAShortDetailModel.swift create mode 100644 Fableon/Class/Player/M/FAShortPlayModel.swift create mode 100644 Fableon/Class/Player/M/FAVideoInfoModel.swift create mode 100644 Fableon/Class/Player/UI/FAPlayerEpUIButton.swift create mode 100644 Fableon/Class/Player/V/FAEpMenuView.swift create mode 100644 Fableon/Class/Player/V/FAEpSelectorCell.swift create mode 100644 Fableon/Class/Player/V/FAEpSelectorCell.xib create mode 100644 Fableon/Class/Player/V/FAEpSelectorView.swift create mode 100644 Fableon/Class/Player/V/FAPlayerDetailCell.swift create mode 100644 Fableon/Class/Player/V/FAPlayerDetailControlView.swift create mode 100644 Fableon/Class/Player/V/FAPlayerProgressView.swift create mode 100644 Fableon/Class/Player/VC/FAPlayerDetailViewController.swift create mode 100644 Fableon/Class/Player/VM/FAShortDetailViewModel.swift create mode 100644 Fableon/Class/Recommend/C/FARecommendViewController.swift create mode 100644 Fableon/Class/Recommend/V/FARecommendPlayerCell.swift create mode 100644 Fableon/Class/Recommend/V/FARecommendPlayerControlView.swift create mode 100644 Fableon/Class/Recommend/VM/FARecommendViewModel.swift create mode 100644 Fableon/Libs/Empty/FAEmpty.swift create mode 100644 Fableon/Libs/FADeviceId/FADeviceIDManager.swift create mode 100644 Fableon/Libs/FADeviceId/FAKeychainHelper.swift create mode 100644 Fableon/Libs/FALocalized/FALocalized.swift create mode 100644 Fableon/Libs/FALogin/FALogin.swift create mode 100644 Fableon/Libs/FALogin/FATokenModel.swift create mode 100644 Fableon/Libs/FALogin/FAUserInfo.swift create mode 100644 Fableon/Libs/FATool/FATool.swift create mode 100644 Fableon/Libs/FSPagerView/FAPagerViewTransformer.swift create mode 100644 Fableon/Libs/FSPagerView/FSPagerSwiftUIView.swift create mode 100644 Fableon/Libs/HUD/FAHUD.swift create mode 100644 Fableon/Libs/HUD/FAToast.swift create mode 100644 Fableon/Libs/WaterfallFlowLayout/FAWaterfallFlowLayout.swift create mode 100644 Fableon/Source/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/AppIcon.appiconset/Fableon_logo.jpg create mode 100644 Fableon/Source/Assets.xcassets/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/LaunchScreen/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/LaunchScreen/launch_bg_image.imageset/4fa48a3ef0637ef7052ed9e3d8e780fc6037d6655e0b7054f37a2f0d4a578175 1@2x.png create mode 100644 Fableon/Source/Assets.xcassets/LaunchScreen/launch_bg_image.imageset/4fa48a3ef0637ef7052ed9e3d8e780fc6037d6655e0b7054f37a2f0d4a578175 1@3x.png create mode 100644 Fableon/Source/Assets.xcassets/LaunchScreen/launch_bg_image.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/LaunchScreen/launch_logo_icon_01.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/LaunchScreen/launch_logo_icon_01.imageset/Fableon_圆角logo@2x.png create mode 100644 Fableon/Source/Assets.xcassets/LaunchScreen/launch_logo_icon_01.imageset/Fableon_圆角logo@3x.png create mode 100644 Fableon/Source/Assets.xcassets/LaunchScreen/launch_logo_icon_02.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/LaunchScreen/launch_logo_icon_02.imageset/Fableon_圆角logo@2x.png create mode 100644 Fableon/Source/Assets.xcassets/LaunchScreen/launch_logo_icon_02.imageset/Fableon_圆角logo@3x.png create mode 100644 Fableon/Source/Assets.xcassets/LaunchScreen/launch_text_image_01.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/LaunchScreen/launch_text_image_01.imageset/Diverse themes@2x.png create mode 100644 Fableon/Source/Assets.xcassets/LaunchScreen/launch_text_image_01.imageset/Diverse themes@3x.png create mode 100644 Fableon/Source/Assets.xcassets/LaunchScreen/launch_text_image_02.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/LaunchScreen/launch_text_image_02.imageset/High-definition playback@2x.png create mode 100644 Fableon/Source/Assets.xcassets/LaunchScreen/launch_text_image_02.imageset/High-definition playback@3x.png create mode 100644 Fableon/Source/Assets.xcassets/LaunchScreen/launch_text_image_03.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/LaunchScreen/launch_text_image_03.imageset/Group 2378@2x.png create mode 100644 Fableon/Source/Assets.xcassets/LaunchScreen/launch_text_image_03.imageset/Group 2378@3x.png create mode 100644 Fableon/Source/Assets.xcassets/LaunchScreen/launch_text_image_04.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/LaunchScreen/launch_text_image_04.imageset/Group 2378@2x.png create mode 100644 Fableon/Source/Assets.xcassets/LaunchScreen/launch_text_image_04.imageset/Group 2378@3x.png create mode 100644 Fableon/Source/Assets.xcassets/color/#000000.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/#000000_0.75.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/#0D0D0D.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/#20A2FF.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/#333333.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/#35A4FE.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/#3769FC.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/#4D4A4A.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/#52A2F1.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/#5CA8FF_0.2.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/#6D6D6D_0.4.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/#777777.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/#81CAFF.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/#8B8B8B.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/#999999.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/#A8DBFF.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/#BEDFFF.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/#C7DEF5.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/#D9D9D9.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/#DDEDFD.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/#F8D01D.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/#F94F7F.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/#FE6C05.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/#FFFFFF.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/#FFFFFF_0.25.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 2914.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 2914.imageset/Frame 2914@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 2914.imageset/Frame 2914@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 2915.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 2915.imageset/Frame 2914@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 2915.imageset/Frame 2914@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 2916.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 2916.imageset/Frame 2916@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 2916.imageset/Frame 2916@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 2920.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 2920.imageset/Frame 2920@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 2920.imageset/Frame 2920@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 2921.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 2921.imageset/Frame 2921@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 2921.imageset/Frame 2921@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 3008.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 3008.imageset/Frame 3008@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 3008.imageset/Frame 3008@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 3009.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 3009.imageset/Frame 3009@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 3009.imageset/Frame 3009@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 3011.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 3011.imageset/Frame 3011@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 3011.imageset/Frame 3011@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 3012.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 3012.imageset/Frame 3011@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 3012.imageset/Frame 3011@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 3015.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 3015.imageset/Frame 3015@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 3015.imageset/Frame 3015@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/Search.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/Search.imageset/Search@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/Search.imageset/Search@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/Thalire.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/Thalire.imageset/Thalire@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/Thalire.imageset/Thalire@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/__question.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/__question.imageset/__question@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/__question.imageset/__question@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/__shop-72.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/__shop-72.imageset/__shop-72@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/__shop-72.imageset/__shop-72@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/collect_star_icon.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/collect_star_icon.imageset/Star 19@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/collect_star_icon.imageset/Star 19@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/collect_star_icon_selected.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/collect_star_icon_selected.imageset/Star 20@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/collect_star_icon_selected.imageset/Star 20@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/done.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/done.imageset/done@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/done.imageset/done@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/icon_about.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/icon_about.imageset/icon_about@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/icon_about.imageset/icon_about@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/icon_feedback.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/icon_feedback.imageset/icon_feedback@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/icon_feedback.imageset/icon_feedback@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/icon_privacy.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/icon_privacy.imageset/icon_privacy@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/icon_privacy.imageset/icon_privacy@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/icon_setting.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/icon_setting.imageset/icon_setting@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/icon_setting.imageset/icon_setting@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/icon_user.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/icon_user.imageset/icon_user@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/icon_user.imageset/icon_user@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/icon_visit.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/icon_visit.imageset/icon_visit@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/icon_visit.imageset/icon_visit@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/logo_image_01.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/logo_image_01.imageset/Fableon_圆角logo 2@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/logo_image_01.imageset/Fableon_圆角logo 2@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/pause_icon.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/pause_icon.imageset/pause@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/pause_icon.imageset/pause@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/placeholder_image.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/placeholder_image.imageset/首页new模块占位图@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/placeholder_image.imageset/首页new模块占位图@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/play_icon_01.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/play_icon_01.imageset/play@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/play_icon_01.imageset/play@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/删除.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/删除.imageset/删除@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/删除.imageset/删除@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/历史记录_icon.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/历史记录_icon.imageset/历史记录_icon@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/历史记录_icon.imageset/历史记录_icon@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/编辑_icon.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/编辑_icon.imageset/编辑_icon@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/编辑_icon.imageset/编辑_icon@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/背景.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/背景.imageset/背景@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/背景.imageset/背景@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/路径 264.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/路径 264.imageset/删除@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/路径 264.imageset/删除@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/首页搜索i_ic.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/首页搜索i_ic.imageset/首页搜索i_ic@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/首页搜索i_ic.imageset/首页搜索i_ic@3x.png create mode 100644 Fableon/Source/Assets.xcassets/tabbar/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/tabbar/tabbar_collect_icon.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/tabbar/tabbar_collect_icon.imageset/收藏_collect_off@2x.png create mode 100644 Fableon/Source/Assets.xcassets/tabbar/tabbar_collect_icon.imageset/收藏_collect_off@3x.png create mode 100644 Fableon/Source/Assets.xcassets/tabbar/tabbar_collect_icon_selected.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/tabbar/tabbar_collect_icon_selected.imageset/收藏_collect_on@2x.png create mode 100644 Fableon/Source/Assets.xcassets/tabbar/tabbar_collect_icon_selected.imageset/收藏_collect_on@3x.png create mode 100644 Fableon/Source/Assets.xcassets/tabbar/tabbar_home_icon.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/tabbar/tabbar_home_icon.imageset/首页_home_off@2x.png create mode 100644 Fableon/Source/Assets.xcassets/tabbar/tabbar_home_icon.imageset/首页_home_off@3x.png create mode 100644 Fableon/Source/Assets.xcassets/tabbar/tabbar_home_icon_selected.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/tabbar/tabbar_home_icon_selected.imageset/首页_home_on@2x.png create mode 100644 Fableon/Source/Assets.xcassets/tabbar/tabbar_home_icon_selected.imageset/首页_home_on@3x.png create mode 100644 Fableon/Source/Assets.xcassets/tabbar/tabbar_me_icon.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/tabbar/tabbar_me_icon.imageset/个人中心_me_off@2x.png create mode 100644 Fableon/Source/Assets.xcassets/tabbar/tabbar_me_icon.imageset/个人中心_me_off@3x.png create mode 100644 Fableon/Source/Assets.xcassets/tabbar/tabbar_me_icon_selected.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/tabbar/tabbar_me_icon_selected.imageset/个人中心_me_on@2x.png create mode 100644 Fableon/Source/Assets.xcassets/tabbar/tabbar_me_icon_selected.imageset/个人中心_me_on@3x.png create mode 100644 Fableon/Source/Assets.xcassets/tabbar/tabbar_recommend_icon.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/tabbar/tabbar_recommend_icon.imageset/推荐_reco_off@2x.png create mode 100644 Fableon/Source/Assets.xcassets/tabbar/tabbar_recommend_icon.imageset/推荐_reco_off@3x.png create mode 100644 Fableon/Source/Assets.xcassets/tabbar/tabbar_recommend_icon_selected.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/tabbar/tabbar_recommend_icon_selected.imageset/推荐_reco_on@2x.png create mode 100644 Fableon/Source/Assets.xcassets/tabbar/tabbar_recommend_icon_selected.imageset/推荐_reco_on@3x.png create mode 100644 Fableon/Source/Base.lproj/LaunchScreen.storyboard create mode 100644 Fableon/Source/Fableon-Bridging-Header.h create mode 100644 Fableon/Source/Info.plist create mode 100644 Fableon/Source/en.lproj/Localizable.strings create mode 100644 Podfile create mode 100644 Podfile.lock diff --git a/.gitignore b/.gitignore index 8a981e9..74f3634 100644 --- a/.gitignore +++ b/.gitignore @@ -38,10 +38,10 @@ playground.xcworkspace # you should judge for yourself, the pros and cons are mentioned at: # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control # -# Pods/ +Pods/ # # Add this line if you want to avoid checking in source code from the Xcode workspace -# *.xcworkspace +*.xcworkspace # Carthage # diff --git a/Fableon.xcodeproj/project.pbxproj b/Fableon.xcodeproj/project.pbxproj new file mode 100644 index 0000000..847eadf --- /dev/null +++ b/Fableon.xcodeproj/project.pbxproj @@ -0,0 +1,1234 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 77; + objects = { + +/* Begin PBXBuildFile section */ + B8B1DA3824F2148CEEF9F162 /* Pods_Fableon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C4958FEE55B4555A94F11F00 /* Pods_Fableon.framework */; }; + F301F6472E974B6300E76A90 /* FARecommendPlayerControlView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F301F6462E974B6300E76A90 /* FARecommendPlayerControlView.swift */; }; + F37103312E978F8C00E7F171 /* FACollectViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F37103302E978F8C00E7F171 /* FACollectViewController.swift */; }; + F37103352E97929F00E7F171 /* FACollectCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F37103342E97929F00E7F171 /* FACollectCell.xib */; }; + F37103362E97929F00E7F171 /* FACollectCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F37103332E97929F00E7F171 /* FACollectCell.swift */; }; + F371033F2E97BDF800E7F171 /* FAHistoryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F371033E2E97BDF800E7F171 /* FAHistoryViewController.swift */; }; + F37103412E97C20C00E7F171 /* UINavigationBar+FAAdd.swift in Sources */ = {isa = PBXBuildFile; fileRef = F37103402E97C20500E7F171 /* UINavigationBar+FAAdd.swift */; }; + F37103462E9CF9EE00E7F171 /* FAHistoryCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F37103452E9CF9EE00E7F171 /* FAHistoryCell.xib */; }; + F37103472E9CF9EE00E7F171 /* FAHistoryCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F37103442E9CF9EE00E7F171 /* FAHistoryCell.swift */; }; + F37103492E9DD98600E7F171 /* UIScrollView+FARefresh.swift in Sources */ = {isa = PBXBuildFile; fileRef = F37103482E9DD97200E7F171 /* UIScrollView+FARefresh.swift */; }; + F371034D2E9DF9FB00E7F171 /* FASearchViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F371034C2E9DF9FB00E7F171 /* FASearchViewController.swift */; }; + F371034F2E9DFB2000E7F171 /* FASearchInputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F371034E2E9DFB2000E7F171 /* FASearchInputView.swift */; }; + F37103512E9E1D7800E7F171 /* FASearchHomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F37103502E9E1D7800E7F171 /* FASearchHomeView.swift */; }; + F37103532E9E1E9300E7F171 /* FASearchRecordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F37103522E9E1E9300E7F171 /* FASearchRecordView.swift */; }; + F37103562E9E1FA500E7F171 /* FASearchRecordCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F37103542E9E1FA500E7F171 /* FASearchRecordCell.swift */; }; + F37103572E9E1FA500E7F171 /* FASearchRecordCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F37103552E9E1FA500E7F171 /* FASearchRecordCell.xib */; }; + F37103592E9E281C00E7F171 /* FASearchRecommendView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F37103582E9E281C00E7F171 /* FASearchRecommendView.swift */; }; + F371035E2E9E2E7400E7F171 /* FASearchRecommendCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F371035D2E9E2E7400E7F171 /* FASearchRecommendCell.xib */; }; + F371035F2E9E2E7400E7F171 /* FASearchRecommendCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F371035C2E9E2E7400E7F171 /* FASearchRecommendCell.swift */; }; + F37103612E9E379E00E7F171 /* FASearchResultView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F37103602E9E379E00E7F171 /* FASearchResultView.swift */; }; + F37103662E9E3ABC00E7F171 /* FASearchResultCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F37103652E9E3ABC00E7F171 /* FASearchResultCell.xib */; }; + F37103672E9E3ABC00E7F171 /* FASearchResultCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F37103642E9E3ABC00E7F171 /* FASearchResultCell.swift */; }; + F37103692E9E44A000E7F171 /* FASearchViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F37103682E9E44A000E7F171 /* FASearchViewModel.swift */; }; + F371036B2E9E530400E7F171 /* UIStackView+FAAdd.swift in Sources */ = {isa = PBXBuildFile; fileRef = F371036A2E9E52FE00E7F171 /* UIStackView+FAAdd.swift */; }; + F371036E2E9E6E7800E7F171 /* FAEmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = F371036D2E9E6E6F00E7F171 /* FAEmpty.swift */; }; + F37103712E9F964000E7F171 /* FALocalized.swift in Sources */ = {isa = PBXBuildFile; fileRef = F37103702E9F963700E7F171 /* FALocalized.swift */; }; + F37103732E9F9E0D00E7F171 /* FAAboutViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F37103722E9F9E0D00E7F171 /* FAAboutViewController.swift */; }; + F37103762E9FA15B00E7F171 /* FAAboutCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F37103742E9FA15B00E7F171 /* FAAboutCell.swift */; }; + F37103772E9FA15B00E7F171 /* FAAboutCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F37103752E9FA15B00E7F171 /* FAAboutCell.xib */; }; + F37103792E9FA91C00E7F171 /* FAAboutHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F37103782E9FA91C00E7F171 /* FAAboutHeaderView.swift */; }; + F371037B2EA0820C00E7F171 /* FASettingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F371037A2EA0820C00E7F171 /* FASettingViewController.swift */; }; + F371037E2EA082CD00E7F171 /* FAWebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F371037D2EA082C700E7F171 /* FAWebView.swift */; }; + F37103802EA0839500E7F171 /* FABaseWebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F371037F2EA0839500E7F171 /* FABaseWebViewController.swift */; }; + F37103822EA0868100E7F171 /* FAAppWebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F37103812EA0868100E7F171 /* FAAppWebViewController.swift */; }; + F37103842EA0873B00E7F171 /* Dictionary+FAAdd.swift in Sources */ = {isa = PBXBuildFile; fileRef = F37103832EA0873400E7F171 /* Dictionary+FAAdd.swift */; }; + F37103862EA087FB00E7F171 /* FAFeedbackViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F37103852EA087FB00E7F171 /* FAFeedbackViewController.swift */; }; + F37103882EA08B6F00E7F171 /* FANetworkMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = F37103872EA08B6F00E7F171 /* FANetworkMonitor.swift */; }; + F38C25FA2E86A217008C22C3 /* UIView+FAAdd.swift in Sources */ = {isa = PBXBuildFile; fileRef = F38C25F92E86A20F008C22C3 /* UIView+FAAdd.swift */; }; + F38C25FD2E86A290008C22C3 /* FADefine.swift in Sources */ = {isa = PBXBuildFile; fileRef = F38C25FC2E86A290008C22C3 /* FADefine.swift */; }; + F38C25FF2E86B663008C22C3 /* AppDelegate+FAConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = F38C25FE2E86B65A008C22C3 /* AppDelegate+FAConfig.swift */; }; + F39E66372E77BAD0008AAAFA /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F39E662D2E77BAD0008AAAFA /* AppDelegate.swift */; }; + F39E66382E77BAD0008AAAFA /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F39E66342E77BAD0008AAAFA /* SceneDelegate.swift */; }; + F39E663A2E77BAD0008AAAFA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F39E662E2E77BAD0008AAAFA /* Assets.xcassets */; }; + F39E663C2E77BAD0008AAAFA /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F39E66312E77BAD0008AAAFA /* LaunchScreen.storyboard */; }; + F3A792AD2E77DF830097E0BC /* FAUserInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A792AC2E77DF830097E0BC /* FAUserInfo.swift */; }; + F3A792AF2E77DFB90097E0BC /* FATokenModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A792AE2E77DFB70097E0BC /* FATokenModel.swift */; }; + F3A792B12E77DFEE0097E0BC /* FALogin.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A792B02E77DFE90097E0BC /* FALogin.swift */; }; + F3A792B42E77E03C0097E0BC /* UserDefaults+FAAdd.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A792B32E77E0360097E0BC /* UserDefaults+FAAdd.swift */; }; + F3A792B62E77E0CC0097E0BC /* FANetworkManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A792B52E77E0CA0097E0BC /* FANetworkManager.swift */; }; + F3A792B82E77E0EF0097E0BC /* FACryptorService.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A792B72E77E0E50097E0BC /* FACryptorService.swift */; }; + F3A792BA2E77E1210097E0BC /* FAAPIPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A792B92E77E1190097E0BC /* FAAPIPath.swift */; }; + F3A792BC2E77E2EE0097E0BC /* String+FAAdd.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A792BB2E77E2ED0097E0BC /* String+FAAdd.swift */; }; + F3A792BF2E77E4B80097E0BC /* FATool.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A792BE2E77E4B70097E0BC /* FATool.swift */; }; + F3A792C12E77E6BA0097E0BC /* UIScreen+FAAdd.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A792C02E77E6B90097E0BC /* UIScreen+FAAdd.swift */; }; + F3A792C42E77E8070097E0BC /* FATabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A792C32E77E8070097E0BC /* FATabBarController.swift */; }; + F3A792C62E77E93E0097E0BC /* FANavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A792C52E77E93E0097E0BC /* FANavigationController.swift */; }; + F3A792C82E77EED10097E0BC /* Font+FAAdd.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A792C72E77EEC80097E0BC /* Font+FAAdd.swift */; }; + F3A792D62E77F70C0097E0BC /* FAShortPlayModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A792CA2E77F70C0097E0BC /* FAShortPlayModel.swift */; }; + F3A792D82E77F70C0097E0BC /* FAShortDetailViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A792D32E77F70C0097E0BC /* FAShortDetailViewModel.swift */; }; + F3A792D92E77F70C0097E0BC /* FAShortDetailModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A792C92E77F70C0097E0BC /* FAShortDetailModel.swift */; }; + F3A792DA2E77F70C0097E0BC /* FAPlayerDetailCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A792CF2E77F70C0097E0BC /* FAPlayerDetailCell.swift */; }; + F3A792DB2E77F70C0097E0BC /* FAVideoInfoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A792CB2E77F70C0097E0BC /* FAVideoInfoModel.swift */; }; + F3A792DC2E77F70C0097E0BC /* FAPlayerDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A792D12E77F70C0097E0BC /* FAPlayerDetailViewController.swift */; }; + F3A792DF2E77F7EA0097E0BC /* FAAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A792DE2E77F7E80097E0BC /* FAAPI.swift */; }; + F3A792E82E77F8590097E0BC /* FAHomeModuleItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A792E72E77F8580097E0BC /* FAHomeModuleItem.swift */; }; + F3A792EA2E77F8820097E0BC /* FAHomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A792E92E77F8820097E0BC /* FAHomeViewModel.swift */; }; + F3A792F22E77F8A80097E0BC /* FAHomeMustSeeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A792EE2E77F8A80097E0BC /* FAHomeMustSeeView.swift */; }; + F3A792F42E77F8A80097E0BC /* FAHomeMustSeeContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A792EC2E77F8A80097E0BC /* FAHomeMustSeeContentView.swift */; }; + F3A792F52E77F8A80097E0BC /* FAHomeRecommendedItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A792F02E77F8A80097E0BC /* FAHomeRecommendedItemView.swift */; }; + F3A792F72E77F8A80097E0BC /* FAHomeNewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A792EF2E77F8A80097E0BC /* FAHomeNewView.swift */; }; + F3A792F82E77F8A80097E0BC /* FAHomeMustSeeShortView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A792ED2E77F8A80097E0BC /* FAHomeMustSeeShortView.swift */; }; + F3A792FD2E77F97C0097E0BC /* FSPagerSwiftUIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A792FC2E77F97B0097E0BC /* FSPagerSwiftUIView.swift */; }; + F3A793002E77FA0C0097E0BC /* SwiftUIExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A792FF2E77FA0B0097E0BC /* SwiftUIExtension.swift */; }; + F3A793022E77FAFB0097E0BC /* FAViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A793012E77FAFB0097E0BC /* FAViewController.swift */; }; + F3A793042E77FB110097E0BC /* FAHomeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A793032E77FB110097E0BC /* FAHomeViewController.swift */; }; + F3A793092E7812F60097E0BC /* FAWaterfallFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A793082E7812F00097E0BC /* FAWaterfallFlowLayout.swift */; }; + F3A7930C2E7813FE0097E0BC /* FACollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A7930B2E7813FE0097E0BC /* FACollectionView.swift */; }; + F3A793122E78F8970097E0BC /* FAHomeItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A793112E78F8970097E0BC /* FAHomeItem.swift */; }; + F3A793142E78FC4C0097E0BC /* FAHomeBannerContentCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A793132E78FC4C0097E0BC /* FAHomeBannerContentCell.swift */; }; + F3A793162E790CC90097E0BC /* FAHomeBannerCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A793152E790CC90097E0BC /* FAHomeBannerCell.swift */; }; + F3A793182E790D440097E0BC /* FAImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A793172E790D440097E0BC /* FAImageView.swift */; }; + F3A7931A2E7911420097E0BC /* FAPagerViewTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A793192E7911420097E0BC /* FAPagerViewTransformer.swift */; }; + F3A7931C2E792D0D0097E0BC /* FAHomeMustSeeContentCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A7931B2E792D0D0097E0BC /* FAHomeMustSeeContentCell.swift */; }; + F3A7931E2E793D000097E0BC /* FAHomeNewContentCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A7931D2E793D000097E0BC /* FAHomeNewContentCell.swift */; }; + F3A793232E7944FF0097E0BC /* FAHomeRecommendedCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F3A793222E7944FF0097E0BC /* FAHomeRecommendedCell.xib */; }; + F3A793242E7944FF0097E0BC /* FAHomeRecommendedCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A793212E7944FF0097E0BC /* FAHomeRecommendedCell.swift */; }; + F3A793292E795B4C0097E0BC /* FAHomeSectionTitleView.xib in Resources */ = {isa = PBXBuildFile; fileRef = F3A793282E795B4C0097E0BC /* FAHomeSectionTitleView.xib */; }; + F3A7932A2E795B4C0097E0BC /* FAHomeSectionTitleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A793272E795B4C0097E0BC /* FAHomeSectionTitleView.swift */; }; + F3A7932C2E796EF80097E0BC /* FAPlayerDetailControlView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A7932B2E796EF80097E0BC /* FAPlayerDetailControlView.swift */; }; + F3A793532E7BA54A0097E0BC /* FAPlayerEpUIButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A793522E7BA54A0097E0BC /* FAPlayerEpUIButton.swift */; }; + F3A798B72E828C180097E0BC /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = F3A798B52E828C180097E0BC /* Localizable.strings */; }; + F3A798B92E828F5E0097E0BC /* FAPlayerProgressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A798B82E828F5E0097E0BC /* FAPlayerProgressView.swift */; }; + F3A798BC2E82AB6F0097E0BC /* FAEpSelectorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A798BB2E82AB6F0097E0BC /* FAEpSelectorView.swift */; }; + F3A798BE2E82ACD10097E0BC /* FAPanModalContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A798BD2E82ACD10097E0BC /* FAPanModalContentView.swift */; }; + F3C9AE5B2E77DDE100E25109 /* FAKeychainHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3C9AE5A2E77DDDF00E25109 /* FAKeychainHelper.swift */; }; + F3C9AE5D2E77DED000E25109 /* FADeviceIDManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3C9AE5C2E77DECF00E25109 /* FADeviceIDManager.swift */; }; + F3DCC0452E89530200D58007 /* CGMutablePath+FARoundedCorner.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3DCC0442E8952FA00D58007 /* CGMutablePath+FARoundedCorner.swift */; }; + F3DCC0482E8A65B000D58007 /* FAEpSelectorCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F3DCC0472E8A65B000D58007 /* FAEpSelectorCell.xib */; }; + F3DCC0492E8A65B000D58007 /* FAEpSelectorCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3DCC0462E8A65B000D58007 /* FAEpSelectorCell.swift */; }; + F3DCC04B2E8A6EAE00D58007 /* FAEpMenuView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3DCC04A2E8A6EAE00D58007 /* FAEpMenuView.swift */; }; + F3DCC04D2E8A6F0D00D58007 /* FAScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3DCC04C2E8A6F0D00D58007 /* FAScrollView.swift */; }; + F3DCC0502E8A861300D58007 /* FAHUD.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3DCC04F2E8A860D00D58007 /* FAHUD.swift */; }; + F3DCC0522E8A863D00D58007 /* FAToast.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3DCC0512E8A863C00D58007 /* FAToast.swift */; }; + F3DCC0572E8A8EE800D58007 /* FAMeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3DCC0562E8A8EE800D58007 /* FAMeViewController.swift */; }; + F3DCC05A2E8A931900D58007 /* FAMeHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3DCC0592E8A931900D58007 /* FAMeHeaderView.swift */; }; + F3DCC05C2E8A9C1B00D58007 /* FATableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3DCC05B2E8A9C1B00D58007 /* FATableView.swift */; }; + F3DCC05E2E8A9C5800D58007 /* FATableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3DCC05D2E8A9C5800D58007 /* FATableViewCell.swift */; }; + F3DCC0632E8A9E7600D58007 /* FAMeCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3DCC0612E8A9E7600D58007 /* FAMeCell.swift */; }; + F3DCC0642E8A9E7600D58007 /* FAMeCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F3DCC0622E8A9E7600D58007 /* FAMeCell.xib */; }; + F3DCC0672E8AA14A00D58007 /* FAMeItemModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3DCC0662E8AA14A00D58007 /* FAMeItemModel.swift */; }; + F3DCC08B2E8BB16F00D58007 /* FARecommendViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3DCC08A2E8BB16F00D58007 /* FARecommendViewController.swift */; }; + F3DCC08E2E8BB1F100D58007 /* FARecommendViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3DCC08D2E8BB1F100D58007 /* FARecommendViewModel.swift */; }; + F3DCC0912E8BBB7600D58007 /* FARecommendPlayerCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3DCC0902E8BBB7600D58007 /* FARecommendPlayerCell.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 196896C43C7C7895E473B9EB /* Pods-Fableon.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Fableon.debug.xcconfig"; path = "Target Support Files/Pods-Fableon/Pods-Fableon.debug.xcconfig"; sourceTree = ""; }; + C4958FEE55B4555A94F11F00 /* Pods_Fableon.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Fableon.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DC14083E24B746ED3DE2FE0C /* Pods-Fableon.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Fableon.release.xcconfig"; path = "Target Support Files/Pods-Fableon/Pods-Fableon.release.xcconfig"; sourceTree = ""; }; + F301F6462E974B6300E76A90 /* FARecommendPlayerControlView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FARecommendPlayerControlView.swift; sourceTree = ""; }; + F37103302E978F8C00E7F171 /* FACollectViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FACollectViewController.swift; sourceTree = ""; }; + F37103332E97929F00E7F171 /* FACollectCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FACollectCell.swift; sourceTree = ""; }; + F37103342E97929F00E7F171 /* FACollectCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FACollectCell.xib; sourceTree = ""; }; + F37103372E97A09500E7F171 /* Fableon-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Fableon-Bridging-Header.h"; sourceTree = ""; }; + F371033E2E97BDF800E7F171 /* FAHistoryViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAHistoryViewController.swift; sourceTree = ""; }; + F37103402E97C20500E7F171 /* UINavigationBar+FAAdd.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UINavigationBar+FAAdd.swift"; sourceTree = ""; }; + F37103442E9CF9EE00E7F171 /* FAHistoryCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAHistoryCell.swift; sourceTree = ""; }; + F37103452E9CF9EE00E7F171 /* FAHistoryCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FAHistoryCell.xib; sourceTree = ""; }; + F37103482E9DD97200E7F171 /* UIScrollView+FARefresh.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIScrollView+FARefresh.swift"; sourceTree = ""; }; + F371034C2E9DF9FB00E7F171 /* FASearchViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FASearchViewController.swift; sourceTree = ""; }; + F371034E2E9DFB2000E7F171 /* FASearchInputView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FASearchInputView.swift; sourceTree = ""; }; + F37103502E9E1D7800E7F171 /* FASearchHomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FASearchHomeView.swift; sourceTree = ""; }; + F37103522E9E1E9300E7F171 /* FASearchRecordView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FASearchRecordView.swift; sourceTree = ""; }; + F37103542E9E1FA500E7F171 /* FASearchRecordCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FASearchRecordCell.swift; sourceTree = ""; }; + F37103552E9E1FA500E7F171 /* FASearchRecordCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FASearchRecordCell.xib; sourceTree = ""; }; + F37103582E9E281C00E7F171 /* FASearchRecommendView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FASearchRecommendView.swift; sourceTree = ""; }; + F371035C2E9E2E7400E7F171 /* FASearchRecommendCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FASearchRecommendCell.swift; sourceTree = ""; }; + F371035D2E9E2E7400E7F171 /* FASearchRecommendCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FASearchRecommendCell.xib; sourceTree = ""; }; + F37103602E9E379E00E7F171 /* FASearchResultView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FASearchResultView.swift; sourceTree = ""; }; + F37103642E9E3ABC00E7F171 /* FASearchResultCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FASearchResultCell.swift; sourceTree = ""; }; + F37103652E9E3ABC00E7F171 /* FASearchResultCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FASearchResultCell.xib; sourceTree = ""; }; + F37103682E9E44A000E7F171 /* FASearchViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FASearchViewModel.swift; sourceTree = ""; }; + F371036A2E9E52FE00E7F171 /* UIStackView+FAAdd.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIStackView+FAAdd.swift"; sourceTree = ""; }; + F371036D2E9E6E6F00E7F171 /* FAEmpty.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAEmpty.swift; sourceTree = ""; }; + F37103702E9F963700E7F171 /* FALocalized.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FALocalized.swift; sourceTree = ""; }; + F37103722E9F9E0D00E7F171 /* FAAboutViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAAboutViewController.swift; sourceTree = ""; }; + F37103742E9FA15B00E7F171 /* FAAboutCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAAboutCell.swift; sourceTree = ""; }; + F37103752E9FA15B00E7F171 /* FAAboutCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FAAboutCell.xib; sourceTree = ""; }; + F37103782E9FA91C00E7F171 /* FAAboutHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAAboutHeaderView.swift; sourceTree = ""; }; + F371037A2EA0820C00E7F171 /* FASettingViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FASettingViewController.swift; sourceTree = ""; }; + F371037D2EA082C700E7F171 /* FAWebView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAWebView.swift; sourceTree = ""; }; + F371037F2EA0839500E7F171 /* FABaseWebViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FABaseWebViewController.swift; sourceTree = ""; }; + F37103812EA0868100E7F171 /* FAAppWebViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAAppWebViewController.swift; sourceTree = ""; }; + F37103832EA0873400E7F171 /* Dictionary+FAAdd.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Dictionary+FAAdd.swift"; sourceTree = ""; }; + F37103852EA087FB00E7F171 /* FAFeedbackViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAFeedbackViewController.swift; sourceTree = ""; }; + F37103872EA08B6F00E7F171 /* FANetworkMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FANetworkMonitor.swift; sourceTree = ""; }; + F38C25F92E86A20F008C22C3 /* UIView+FAAdd.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIView+FAAdd.swift"; sourceTree = ""; }; + F38C25FC2E86A290008C22C3 /* FADefine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FADefine.swift; sourceTree = ""; }; + F38C25FE2E86B65A008C22C3 /* AppDelegate+FAConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AppDelegate+FAConfig.swift"; sourceTree = ""; }; + F39E65E52E77B824008AAAFA /* Fableon.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Fableon.app; sourceTree = BUILT_PRODUCTS_DIR; }; + F39E662D2E77BAD0008AAAFA /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + F39E662E2E77BAD0008AAAFA /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + F39E662F2E77BAD0008AAAFA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + F39E66302E77BAD0008AAAFA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + F39E66342E77BAD0008AAAFA /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + F3A792AC2E77DF830097E0BC /* FAUserInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAUserInfo.swift; sourceTree = ""; }; + F3A792AE2E77DFB70097E0BC /* FATokenModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FATokenModel.swift; sourceTree = ""; }; + F3A792B02E77DFE90097E0BC /* FALogin.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FALogin.swift; sourceTree = ""; }; + F3A792B32E77E0360097E0BC /* UserDefaults+FAAdd.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserDefaults+FAAdd.swift"; sourceTree = ""; }; + F3A792B52E77E0CA0097E0BC /* FANetworkManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FANetworkManager.swift; sourceTree = ""; }; + F3A792B72E77E0E50097E0BC /* FACryptorService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FACryptorService.swift; sourceTree = ""; }; + F3A792B92E77E1190097E0BC /* FAAPIPath.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAAPIPath.swift; sourceTree = ""; }; + F3A792BB2E77E2ED0097E0BC /* String+FAAdd.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+FAAdd.swift"; sourceTree = ""; }; + F3A792BE2E77E4B70097E0BC /* FATool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FATool.swift; sourceTree = ""; }; + F3A792C02E77E6B90097E0BC /* UIScreen+FAAdd.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIScreen+FAAdd.swift"; sourceTree = ""; }; + F3A792C32E77E8070097E0BC /* FATabBarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FATabBarController.swift; sourceTree = ""; }; + F3A792C52E77E93E0097E0BC /* FANavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FANavigationController.swift; sourceTree = ""; }; + F3A792C72E77EEC80097E0BC /* Font+FAAdd.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Font+FAAdd.swift"; sourceTree = ""; }; + F3A792C92E77F70C0097E0BC /* FAShortDetailModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAShortDetailModel.swift; sourceTree = ""; }; + F3A792CA2E77F70C0097E0BC /* FAShortPlayModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAShortPlayModel.swift; sourceTree = ""; }; + F3A792CB2E77F70C0097E0BC /* FAVideoInfoModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAVideoInfoModel.swift; sourceTree = ""; }; + F3A792CF2E77F70C0097E0BC /* FAPlayerDetailCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAPlayerDetailCell.swift; sourceTree = ""; }; + F3A792D12E77F70C0097E0BC /* FAPlayerDetailViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAPlayerDetailViewController.swift; sourceTree = ""; }; + F3A792D32E77F70C0097E0BC /* FAShortDetailViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAShortDetailViewModel.swift; sourceTree = ""; }; + F3A792DE2E77F7E80097E0BC /* FAAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAAPI.swift; sourceTree = ""; }; + F3A792E72E77F8580097E0BC /* FAHomeModuleItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAHomeModuleItem.swift; sourceTree = ""; }; + F3A792E92E77F8820097E0BC /* FAHomeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAHomeViewModel.swift; sourceTree = ""; }; + F3A792EC2E77F8A80097E0BC /* FAHomeMustSeeContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAHomeMustSeeContentView.swift; sourceTree = ""; }; + F3A792ED2E77F8A80097E0BC /* FAHomeMustSeeShortView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAHomeMustSeeShortView.swift; sourceTree = ""; }; + F3A792EE2E77F8A80097E0BC /* FAHomeMustSeeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAHomeMustSeeView.swift; sourceTree = ""; }; + F3A792EF2E77F8A80097E0BC /* FAHomeNewView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAHomeNewView.swift; sourceTree = ""; }; + F3A792F02E77F8A80097E0BC /* FAHomeRecommendedItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAHomeRecommendedItemView.swift; sourceTree = ""; }; + F3A792FC2E77F97B0097E0BC /* FSPagerSwiftUIView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FSPagerSwiftUIView.swift; sourceTree = ""; }; + F3A792FF2E77FA0B0097E0BC /* SwiftUIExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftUIExtension.swift; sourceTree = ""; }; + F3A793012E77FAFB0097E0BC /* FAViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAViewController.swift; sourceTree = ""; }; + F3A793032E77FB110097E0BC /* FAHomeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAHomeViewController.swift; sourceTree = ""; }; + F3A793082E7812F00097E0BC /* FAWaterfallFlowLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAWaterfallFlowLayout.swift; sourceTree = ""; }; + F3A7930B2E7813FE0097E0BC /* FACollectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FACollectionView.swift; sourceTree = ""; }; + F3A793112E78F8970097E0BC /* FAHomeItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAHomeItem.swift; sourceTree = ""; }; + F3A793132E78FC4C0097E0BC /* FAHomeBannerContentCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAHomeBannerContentCell.swift; sourceTree = ""; }; + F3A793152E790CC90097E0BC /* FAHomeBannerCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAHomeBannerCell.swift; sourceTree = ""; }; + F3A793172E790D440097E0BC /* FAImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAImageView.swift; sourceTree = ""; }; + F3A793192E7911420097E0BC /* FAPagerViewTransformer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAPagerViewTransformer.swift; sourceTree = ""; }; + F3A7931B2E792D0D0097E0BC /* FAHomeMustSeeContentCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAHomeMustSeeContentCell.swift; sourceTree = ""; }; + F3A7931D2E793D000097E0BC /* FAHomeNewContentCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAHomeNewContentCell.swift; sourceTree = ""; }; + F3A793212E7944FF0097E0BC /* FAHomeRecommendedCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAHomeRecommendedCell.swift; sourceTree = ""; }; + F3A793222E7944FF0097E0BC /* FAHomeRecommendedCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FAHomeRecommendedCell.xib; sourceTree = ""; }; + F3A793272E795B4C0097E0BC /* FAHomeSectionTitleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAHomeSectionTitleView.swift; sourceTree = ""; }; + F3A793282E795B4C0097E0BC /* FAHomeSectionTitleView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FAHomeSectionTitleView.xib; sourceTree = ""; }; + F3A7932B2E796EF80097E0BC /* FAPlayerDetailControlView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAPlayerDetailControlView.swift; sourceTree = ""; }; + F3A793522E7BA54A0097E0BC /* FAPlayerEpUIButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAPlayerEpUIButton.swift; sourceTree = ""; }; + F3A798B62E828C180097E0BC /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; + F3A798B82E828F5E0097E0BC /* FAPlayerProgressView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAPlayerProgressView.swift; sourceTree = ""; }; + F3A798BB2E82AB6F0097E0BC /* FAEpSelectorView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAEpSelectorView.swift; sourceTree = ""; }; + F3A798BD2E82ACD10097E0BC /* FAPanModalContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAPanModalContentView.swift; sourceTree = ""; }; + F3C9AE5A2E77DDDF00E25109 /* FAKeychainHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAKeychainHelper.swift; sourceTree = ""; }; + F3C9AE5C2E77DECF00E25109 /* FADeviceIDManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FADeviceIDManager.swift; sourceTree = ""; }; + F3DCC0442E8952FA00D58007 /* CGMutablePath+FARoundedCorner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CGMutablePath+FARoundedCorner.swift"; sourceTree = ""; }; + F3DCC0462E8A65B000D58007 /* FAEpSelectorCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAEpSelectorCell.swift; sourceTree = ""; }; + F3DCC0472E8A65B000D58007 /* FAEpSelectorCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FAEpSelectorCell.xib; sourceTree = ""; }; + F3DCC04A2E8A6EAE00D58007 /* FAEpMenuView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAEpMenuView.swift; sourceTree = ""; }; + F3DCC04C2E8A6F0D00D58007 /* FAScrollView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAScrollView.swift; sourceTree = ""; }; + F3DCC04F2E8A860D00D58007 /* FAHUD.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAHUD.swift; sourceTree = ""; }; + F3DCC0512E8A863C00D58007 /* FAToast.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAToast.swift; sourceTree = ""; }; + F3DCC0562E8A8EE800D58007 /* FAMeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAMeViewController.swift; sourceTree = ""; }; + F3DCC0592E8A931900D58007 /* FAMeHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAMeHeaderView.swift; sourceTree = ""; }; + F3DCC05B2E8A9C1B00D58007 /* FATableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FATableView.swift; sourceTree = ""; }; + F3DCC05D2E8A9C5800D58007 /* FATableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FATableViewCell.swift; sourceTree = ""; }; + F3DCC0612E8A9E7600D58007 /* FAMeCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAMeCell.swift; sourceTree = ""; }; + F3DCC0622E8A9E7600D58007 /* FAMeCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FAMeCell.xib; sourceTree = ""; }; + F3DCC0662E8AA14A00D58007 /* FAMeItemModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAMeItemModel.swift; sourceTree = ""; }; + F3DCC08A2E8BB16F00D58007 /* FARecommendViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FARecommendViewController.swift; sourceTree = ""; }; + F3DCC08D2E8BB1F100D58007 /* FARecommendViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FARecommendViewModel.swift; sourceTree = ""; }; + F3DCC0902E8BBB7600D58007 /* FARecommendPlayerCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FARecommendPlayerCell.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + F39E65E22E77B824008AAAFA /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B8B1DA3824F2148CEEF9F162 /* Pods_Fableon.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 61670878B802CB009A47D7FD /* Frameworks */ = { + isa = PBXGroup; + children = ( + C4958FEE55B4555A94F11F00 /* Pods_Fableon.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + A9F088F683BE0CE6B61480BB /* Pods */ = { + isa = PBXGroup; + children = ( + 196896C43C7C7895E473B9EB /* Pods-Fableon.debug.xcconfig */, + DC14083E24B746ED3DE2FE0C /* Pods-Fableon.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + F371032E2E978F4D00E7F171 /* MyShort */ = { + isa = PBXGroup; + children = ( + F371032F2E978F6600E7F171 /* C */, + F37103322E97927A00E7F171 /* V */, + ); + path = MyShort; + sourceTree = ""; + }; + F371032F2E978F6600E7F171 /* C */ = { + isa = PBXGroup; + children = ( + F37103302E978F8C00E7F171 /* FACollectViewController.swift */, + F371033E2E97BDF800E7F171 /* FAHistoryViewController.swift */, + ); + path = C; + sourceTree = ""; + }; + F37103322E97927A00E7F171 /* V */ = { + isa = PBXGroup; + children = ( + F37103332E97929F00E7F171 /* FACollectCell.swift */, + F37103342E97929F00E7F171 /* FACollectCell.xib */, + F37103442E9CF9EE00E7F171 /* FAHistoryCell.swift */, + F37103452E9CF9EE00E7F171 /* FAHistoryCell.xib */, + ); + path = V; + sourceTree = ""; + }; + F371036C2E9E6E3300E7F171 /* Empty */ = { + isa = PBXGroup; + children = ( + F371036D2E9E6E6F00E7F171 /* FAEmpty.swift */, + ); + path = Empty; + sourceTree = ""; + }; + F371036F2E9F960F00E7F171 /* FALocalized */ = { + isa = PBXGroup; + children = ( + F37103702E9F963700E7F171 /* FALocalized.swift */, + ); + path = FALocalized; + sourceTree = ""; + }; + F371037C2EA0829D00E7F171 /* WebView */ = { + isa = PBXGroup; + children = ( + F371037D2EA082C700E7F171 /* FAWebView.swift */, + F371037F2EA0839500E7F171 /* FABaseWebViewController.swift */, + F37103812EA0868100E7F171 /* FAAppWebViewController.swift */, + ); + path = WebView; + sourceTree = ""; + }; + F38C25FB2E86A265008C22C3 /* Define */ = { + isa = PBXGroup; + children = ( + F38C25FC2E86A290008C22C3 /* FADefine.swift */, + ); + path = Define; + sourceTree = ""; + }; + F39E65DC2E77B824008AAAFA = { + isa = PBXGroup; + children = ( + F39E66362E77BAD0008AAAFA /* Fableon */, + F39E65E62E77B824008AAAFA /* Products */, + A9F088F683BE0CE6B61480BB /* Pods */, + 61670878B802CB009A47D7FD /* Frameworks */, + ); + sourceTree = ""; + }; + F39E65E62E77B824008AAAFA /* Products */ = { + isa = PBXGroup; + children = ( + F39E65E52E77B824008AAAFA /* Fableon.app */, + ); + name = Products; + sourceTree = ""; + }; + F39E66362E77BAD0008AAAFA /* Fableon */ = { + isa = PBXGroup; + children = ( + F39E663F2E77BAF1008AAAFA /* App */, + F39E663E2E77BADC008AAAFA /* Base */, + F3C9AE582E77DD8C00E25109 /* Class */, + F39E66402E77BBF9008AAAFA /* Source */, + F3C9AE572E77DD8400E25109 /* Libs */, + ); + path = Fableon; + sourceTree = ""; + }; + F39E663E2E77BADC008AAAFA /* Base */ = { + isa = PBXGroup; + children = ( + F371037C2EA0829D00E7F171 /* WebView */, + F38C25FB2E86A265008C22C3 /* Define */, + F3A792C22E77E7D50097E0BC /* Controller */, + F3A7930A2E7813DA0097E0BC /* View */, + F3A792B22E77E0290097E0BC /* Extension */, + F3C9AE562E77C1CE00E25109 /* Request */, + ); + path = Base; + sourceTree = ""; + }; + F39E663F2E77BAF1008AAAFA /* App */ = { + isa = PBXGroup; + children = ( + F39E662D2E77BAD0008AAAFA /* AppDelegate.swift */, + F39E66342E77BAD0008AAAFA /* SceneDelegate.swift */, + F38C25FE2E86B65A008C22C3 /* AppDelegate+FAConfig.swift */, + ); + path = App; + sourceTree = ""; + }; + F39E66402E77BBF9008AAAFA /* Source */ = { + isa = PBXGroup; + children = ( + F37103372E97A09500E7F171 /* Fableon-Bridging-Header.h */, + F39E662E2E77BAD0008AAAFA /* Assets.xcassets */, + F39E662F2E77BAD0008AAAFA /* Info.plist */, + F39E66312E77BAD0008AAAFA /* LaunchScreen.storyboard */, + F3A798B52E828C180097E0BC /* Localizable.strings */, + ); + path = Source; + sourceTree = ""; + }; + F3A792B22E77E0290097E0BC /* Extension */ = { + isa = PBXGroup; + children = ( + F3A792FE2E77F9FB0097E0BC /* UI */, + F3A792C72E77EEC80097E0BC /* Font+FAAdd.swift */, + F3A792C02E77E6B90097E0BC /* UIScreen+FAAdd.swift */, + F3A792BB2E77E2ED0097E0BC /* String+FAAdd.swift */, + F3A792B32E77E0360097E0BC /* UserDefaults+FAAdd.swift */, + F38C25F92E86A20F008C22C3 /* UIView+FAAdd.swift */, + F3DCC0442E8952FA00D58007 /* CGMutablePath+FARoundedCorner.swift */, + F37103402E97C20500E7F171 /* UINavigationBar+FAAdd.swift */, + F37103482E9DD97200E7F171 /* UIScrollView+FARefresh.swift */, + F371036A2E9E52FE00E7F171 /* UIStackView+FAAdd.swift */, + F37103832EA0873400E7F171 /* Dictionary+FAAdd.swift */, + ); + path = Extension; + sourceTree = ""; + }; + F3A792BD2E77E4AF0097E0BC /* FATool */ = { + isa = PBXGroup; + children = ( + F3A792BE2E77E4B70097E0BC /* FATool.swift */, + ); + path = FATool; + sourceTree = ""; + }; + F3A792C22E77E7D50097E0BC /* Controller */ = { + isa = PBXGroup; + children = ( + F3A792C32E77E8070097E0BC /* FATabBarController.swift */, + F3A792C52E77E93E0097E0BC /* FANavigationController.swift */, + F3A793012E77FAFB0097E0BC /* FAViewController.swift */, + ); + path = Controller; + sourceTree = ""; + }; + F3A792CC2E77F70C0097E0BC /* M */ = { + isa = PBXGroup; + children = ( + F3A792C92E77F70C0097E0BC /* FAShortDetailModel.swift */, + F3A792CA2E77F70C0097E0BC /* FAShortPlayModel.swift */, + F3A792CB2E77F70C0097E0BC /* FAVideoInfoModel.swift */, + ); + path = M; + sourceTree = ""; + }; + F3A792CE2E77F70C0097E0BC /* UI */ = { + isa = PBXGroup; + children = ( + F3A793522E7BA54A0097E0BC /* FAPlayerEpUIButton.swift */, + ); + path = UI; + sourceTree = ""; + }; + F3A792D02E77F70C0097E0BC /* V */ = { + isa = PBXGroup; + children = ( + F3A792CF2E77F70C0097E0BC /* FAPlayerDetailCell.swift */, + F3A7932B2E796EF80097E0BC /* FAPlayerDetailControlView.swift */, + F3A798B82E828F5E0097E0BC /* FAPlayerProgressView.swift */, + F3A798BB2E82AB6F0097E0BC /* FAEpSelectorView.swift */, + F3DCC0462E8A65B000D58007 /* FAEpSelectorCell.swift */, + F3DCC0472E8A65B000D58007 /* FAEpSelectorCell.xib */, + F3DCC04A2E8A6EAE00D58007 /* FAEpMenuView.swift */, + ); + path = V; + sourceTree = ""; + }; + F3A792D22E77F70C0097E0BC /* VC */ = { + isa = PBXGroup; + children = ( + F3A792D12E77F70C0097E0BC /* FAPlayerDetailViewController.swift */, + ); + path = VC; + sourceTree = ""; + }; + F3A792D42E77F70C0097E0BC /* VM */ = { + isa = PBXGroup; + children = ( + F3A792D32E77F70C0097E0BC /* FAShortDetailViewModel.swift */, + ); + path = VM; + sourceTree = ""; + }; + F3A792D52E77F70C0097E0BC /* Player */ = { + isa = PBXGroup; + children = ( + F3A792CE2E77F70C0097E0BC /* UI */, + F3A792D22E77F70C0097E0BC /* VC */, + F3A792D02E77F70C0097E0BC /* V */, + F3A792CC2E77F70C0097E0BC /* M */, + F3A792D42E77F70C0097E0BC /* VM */, + ); + path = Player; + sourceTree = ""; + }; + F3A792DD2E77F7D20097E0BC /* FAAPI */ = { + isa = PBXGroup; + children = ( + F3A792DE2E77F7E80097E0BC /* FAAPI.swift */, + ); + path = FAAPI; + sourceTree = ""; + }; + F3A792E02E77F8040097E0BC /* Home */ = { + isa = PBXGroup; + children = ( + F3A792E52E77F8400097E0BC /* UI */, + F3A792E42E77F83A0097E0BC /* C */, + F3A792E32E77F8350097E0BC /* V */, + F3A792E22E77F82D0097E0BC /* M */, + F3A792E12E77F8220097E0BC /* VM */, + ); + path = Home; + sourceTree = ""; + }; + F3A792E12E77F8220097E0BC /* VM */ = { + isa = PBXGroup; + children = ( + F3A792E92E77F8820097E0BC /* FAHomeViewModel.swift */, + F37103682E9E44A000E7F171 /* FASearchViewModel.swift */, + ); + path = VM; + sourceTree = ""; + }; + F3A792E22E77F82D0097E0BC /* M */ = { + isa = PBXGroup; + children = ( + F3A792E72E77F8580097E0BC /* FAHomeModuleItem.swift */, + F3A793112E78F8970097E0BC /* FAHomeItem.swift */, + ); + path = M; + sourceTree = ""; + }; + F3A792E32E77F8350097E0BC /* V */ = { + isa = PBXGroup; + children = ( + F3A793132E78FC4C0097E0BC /* FAHomeBannerContentCell.swift */, + F3A793152E790CC90097E0BC /* FAHomeBannerCell.swift */, + F3A7931B2E792D0D0097E0BC /* FAHomeMustSeeContentCell.swift */, + F3A7931D2E793D000097E0BC /* FAHomeNewContentCell.swift */, + F3A793212E7944FF0097E0BC /* FAHomeRecommendedCell.swift */, + F3A793222E7944FF0097E0BC /* FAHomeRecommendedCell.xib */, + F3A793272E795B4C0097E0BC /* FAHomeSectionTitleView.swift */, + F3A793282E795B4C0097E0BC /* FAHomeSectionTitleView.xib */, + F371034E2E9DFB2000E7F171 /* FASearchInputView.swift */, + F37103502E9E1D7800E7F171 /* FASearchHomeView.swift */, + F37103602E9E379E00E7F171 /* FASearchResultView.swift */, + F37103522E9E1E9300E7F171 /* FASearchRecordView.swift */, + F37103542E9E1FA500E7F171 /* FASearchRecordCell.swift */, + F37103552E9E1FA500E7F171 /* FASearchRecordCell.xib */, + F37103582E9E281C00E7F171 /* FASearchRecommendView.swift */, + F371035C2E9E2E7400E7F171 /* FASearchRecommendCell.swift */, + F371035D2E9E2E7400E7F171 /* FASearchRecommendCell.xib */, + F37103642E9E3ABC00E7F171 /* FASearchResultCell.swift */, + F37103652E9E3ABC00E7F171 /* FASearchResultCell.xib */, + ); + path = V; + sourceTree = ""; + }; + F3A792E42E77F83A0097E0BC /* C */ = { + isa = PBXGroup; + children = ( + F3A793032E77FB110097E0BC /* FAHomeViewController.swift */, + F371034C2E9DF9FB00E7F171 /* FASearchViewController.swift */, + ); + path = C; + sourceTree = ""; + }; + F3A792E52E77F8400097E0BC /* UI */ = { + isa = PBXGroup; + children = ( + F3A792EC2E77F8A80097E0BC /* FAHomeMustSeeContentView.swift */, + F3A792ED2E77F8A80097E0BC /* FAHomeMustSeeShortView.swift */, + F3A792EE2E77F8A80097E0BC /* FAHomeMustSeeView.swift */, + F3A792EF2E77F8A80097E0BC /* FAHomeNewView.swift */, + F3A792F02E77F8A80097E0BC /* FAHomeRecommendedItemView.swift */, + ); + path = UI; + sourceTree = ""; + }; + F3A792FB2E77F9680097E0BC /* FSPagerView */ = { + isa = PBXGroup; + children = ( + F3A792FC2E77F97B0097E0BC /* FSPagerSwiftUIView.swift */, + F3A793192E7911420097E0BC /* FAPagerViewTransformer.swift */, + ); + path = FSPagerView; + sourceTree = ""; + }; + F3A792FE2E77F9FB0097E0BC /* UI */ = { + isa = PBXGroup; + children = ( + F3A792FF2E77FA0B0097E0BC /* SwiftUIExtension.swift */, + ); + path = UI; + sourceTree = ""; + }; + F3A793072E7812DE0097E0BC /* WaterfallFlowLayout */ = { + isa = PBXGroup; + children = ( + F3A793082E7812F00097E0BC /* FAWaterfallFlowLayout.swift */, + ); + path = WaterfallFlowLayout; + sourceTree = ""; + }; + F3A7930A2E7813DA0097E0BC /* View */ = { + isa = PBXGroup; + children = ( + F3DCC05B2E8A9C1B00D58007 /* FATableView.swift */, + F3DCC05D2E8A9C5800D58007 /* FATableViewCell.swift */, + F3A7930B2E7813FE0097E0BC /* FACollectionView.swift */, + F3A793172E790D440097E0BC /* FAImageView.swift */, + F3A798BD2E82ACD10097E0BC /* FAPanModalContentView.swift */, + F3DCC04C2E8A6F0D00D58007 /* FAScrollView.swift */, + ); + path = View; + sourceTree = ""; + }; + F3C9AE562E77C1CE00E25109 /* Request */ = { + isa = PBXGroup; + children = ( + F3A792DD2E77F7D20097E0BC /* FAAPI */, + F3A792B92E77E1190097E0BC /* FAAPIPath.swift */, + F3A792B72E77E0E50097E0BC /* FACryptorService.swift */, + F3A792B52E77E0CA0097E0BC /* FANetworkManager.swift */, + F37103872EA08B6F00E7F171 /* FANetworkMonitor.swift */, + ); + path = Request; + sourceTree = ""; + }; + F3C9AE572E77DD8400E25109 /* Libs */ = { + isa = PBXGroup; + children = ( + F371036F2E9F960F00E7F171 /* FALocalized */, + F371036C2E9E6E3300E7F171 /* Empty */, + F3DCC04E2E8A85F400D58007 /* HUD */, + F3A793072E7812DE0097E0BC /* WaterfallFlowLayout */, + F3A792FB2E77F9680097E0BC /* FSPagerView */, + F3A792BD2E77E4AF0097E0BC /* FATool */, + F3C9AE5E2E77DF1800E25109 /* FALogin */, + F3C9AE592E77DDB500E25109 /* FADeviceId */, + ); + path = Libs; + sourceTree = ""; + }; + F3C9AE582E77DD8C00E25109 /* Class */ = { + isa = PBXGroup; + children = ( + F3A792E02E77F8040097E0BC /* Home */, + F3DCC0532E8A8EB200D58007 /* Me */, + F3A792D52E77F70C0097E0BC /* Player */, + F3DCC0882E8BB12600D58007 /* Recommend */, + F371032E2E978F4D00E7F171 /* MyShort */, + ); + path = Class; + sourceTree = ""; + }; + F3C9AE592E77DDB500E25109 /* FADeviceId */ = { + isa = PBXGroup; + children = ( + F3C9AE5C2E77DECF00E25109 /* FADeviceIDManager.swift */, + F3C9AE5A2E77DDDF00E25109 /* FAKeychainHelper.swift */, + ); + path = FADeviceId; + sourceTree = ""; + }; + F3C9AE5E2E77DF1800E25109 /* FALogin */ = { + isa = PBXGroup; + children = ( + F3A792B02E77DFE90097E0BC /* FALogin.swift */, + F3A792AC2E77DF830097E0BC /* FAUserInfo.swift */, + F3A792AE2E77DFB70097E0BC /* FATokenModel.swift */, + ); + path = FALogin; + sourceTree = ""; + }; + F3DCC04E2E8A85F400D58007 /* HUD */ = { + isa = PBXGroup; + children = ( + F3DCC0512E8A863C00D58007 /* FAToast.swift */, + F3DCC04F2E8A860D00D58007 /* FAHUD.swift */, + ); + path = HUD; + sourceTree = ""; + }; + F3DCC0532E8A8EB200D58007 /* Me */ = { + isa = PBXGroup; + children = ( + F3DCC0552E8A8EC100D58007 /* C */, + F3DCC0582E8A92FD00D58007 /* V */, + F3DCC0652E8AA12800D58007 /* M */, + ); + path = Me; + sourceTree = ""; + }; + F3DCC0552E8A8EC100D58007 /* C */ = { + isa = PBXGroup; + children = ( + F3DCC0562E8A8EE800D58007 /* FAMeViewController.swift */, + F37103722E9F9E0D00E7F171 /* FAAboutViewController.swift */, + F371037A2EA0820C00E7F171 /* FASettingViewController.swift */, + F37103852EA087FB00E7F171 /* FAFeedbackViewController.swift */, + ); + path = C; + sourceTree = ""; + }; + F3DCC0582E8A92FD00D58007 /* V */ = { + isa = PBXGroup; + children = ( + F3DCC0592E8A931900D58007 /* FAMeHeaderView.swift */, + F3DCC0612E8A9E7600D58007 /* FAMeCell.swift */, + F3DCC0622E8A9E7600D58007 /* FAMeCell.xib */, + F37103742E9FA15B00E7F171 /* FAAboutCell.swift */, + F37103752E9FA15B00E7F171 /* FAAboutCell.xib */, + F37103782E9FA91C00E7F171 /* FAAboutHeaderView.swift */, + ); + path = V; + sourceTree = ""; + }; + F3DCC0652E8AA12800D58007 /* M */ = { + isa = PBXGroup; + children = ( + F3DCC0662E8AA14A00D58007 /* FAMeItemModel.swift */, + ); + path = M; + sourceTree = ""; + }; + F3DCC0882E8BB12600D58007 /* Recommend */ = { + isa = PBXGroup; + children = ( + F3DCC0892E8BB14E00D58007 /* C */, + F3DCC08F2E8BBB5500D58007 /* V */, + F3DCC08C2E8BB1CA00D58007 /* VM */, + ); + path = Recommend; + sourceTree = ""; + }; + F3DCC0892E8BB14E00D58007 /* C */ = { + isa = PBXGroup; + children = ( + F3DCC08A2E8BB16F00D58007 /* FARecommendViewController.swift */, + ); + path = C; + sourceTree = ""; + }; + F3DCC08C2E8BB1CA00D58007 /* VM */ = { + isa = PBXGroup; + children = ( + F3DCC08D2E8BB1F100D58007 /* FARecommendViewModel.swift */, + ); + path = VM; + sourceTree = ""; + }; + F3DCC08F2E8BBB5500D58007 /* V */ = { + isa = PBXGroup; + children = ( + F3DCC0902E8BBB7600D58007 /* FARecommendPlayerCell.swift */, + F301F6462E974B6300E76A90 /* FARecommendPlayerControlView.swift */, + ); + path = V; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + F39E65E42E77B824008AAAFA /* Fableon */ = { + isa = PBXNativeTarget; + buildConfigurationList = F39E65F82E77B826008AAAFA /* Build configuration list for PBXNativeTarget "Fableon" */; + buildPhases = ( + 9E9E59200EA11A4375AF0F90 /* [CP] Check Pods Manifest.lock */, + F39E65E12E77B824008AAAFA /* Sources */, + F39E65E22E77B824008AAAFA /* Frameworks */, + F39E65E32E77B824008AAAFA /* Resources */, + 48BC3A4ABA5C7EECD0A916D2 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Fableon; + productName = Fableon; + productReference = F39E65E52E77B824008AAAFA /* Fableon.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + F39E65DD2E77B824008AAAFA /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1640; + LastUpgradeCheck = 1640; + TargetAttributes = { + F39E65E42E77B824008AAAFA = { + CreatedOnToolsVersion = 16.4; + LastSwiftMigration = 1640; + }; + }; + }; + buildConfigurationList = F39E65E02E77B824008AAAFA /* Build configuration list for PBXProject "Fableon" */; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = F39E65DC2E77B824008AAAFA; + minimizedProjectReferenceProxies = 1; + preferredProjectObjectVersion = 77; + productRefGroup = F39E65E62E77B824008AAAFA /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + F39E65E42E77B824008AAAFA /* Fableon */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + F39E65E32E77B824008AAAFA /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F3A798B72E828C180097E0BC /* Localizable.strings in Resources */, + F37103572E9E1FA500E7F171 /* FASearchRecordCell.xib in Resources */, + F39E663A2E77BAD0008AAAFA /* Assets.xcassets in Resources */, + F37103772E9FA15B00E7F171 /* FAAboutCell.xib in Resources */, + F371035E2E9E2E7400E7F171 /* FASearchRecommendCell.xib in Resources */, + F37103462E9CF9EE00E7F171 /* FAHistoryCell.xib in Resources */, + F3A793292E795B4C0097E0BC /* FAHomeSectionTitleView.xib in Resources */, + F3A793232E7944FF0097E0BC /* FAHomeRecommendedCell.xib in Resources */, + F37103662E9E3ABC00E7F171 /* FASearchResultCell.xib in Resources */, + F3DCC0482E8A65B000D58007 /* FAEpSelectorCell.xib in Resources */, + F39E663C2E77BAD0008AAAFA /* LaunchScreen.storyboard in Resources */, + F3DCC0642E8A9E7600D58007 /* FAMeCell.xib in Resources */, + F37103352E97929F00E7F171 /* FACollectCell.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 48BC3A4ABA5C7EECD0A916D2 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Fableon/Pods-Fableon-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Fableon/Pods-Fableon-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Fableon/Pods-Fableon-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 9E9E59200EA11A4375AF0F90 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Fableon-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + F39E65E12E77B824008AAAFA /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F3A792FD2E77F97C0097E0BC /* FSPagerSwiftUIView.swift in Sources */, + F3DCC0522E8A863D00D58007 /* FAToast.swift in Sources */, + F3A793022E77FAFB0097E0BC /* FAViewController.swift in Sources */, + F3A792B42E77E03C0097E0BC /* UserDefaults+FAAdd.swift in Sources */, + F38C25FD2E86A290008C22C3 /* FADefine.swift in Sources */, + F3A793182E790D440097E0BC /* FAImageView.swift in Sources */, + F3DCC05A2E8A931900D58007 /* FAMeHeaderView.swift in Sources */, + F3A792B62E77E0CC0097E0BC /* FANetworkManager.swift in Sources */, + F3A792C62E77E93E0097E0BC /* FANavigationController.swift in Sources */, + F37103692E9E44A000E7F171 /* FASearchViewModel.swift in Sources */, + F3A793122E78F8970097E0BC /* FAHomeItem.swift in Sources */, + F3A798BE2E82ACD10097E0BC /* FAPanModalContentView.swift in Sources */, + F3A792F22E77F8A80097E0BC /* FAHomeMustSeeView.swift in Sources */, + F3A793242E7944FF0097E0BC /* FAHomeRecommendedCell.swift in Sources */, + F3A792F42E77F8A80097E0BC /* FAHomeMustSeeContentView.swift in Sources */, + F3DCC05E2E8A9C5800D58007 /* FATableViewCell.swift in Sources */, + F371037E2EA082CD00E7F171 /* FAWebView.swift in Sources */, + F3A7931C2E792D0D0097E0BC /* FAHomeMustSeeContentCell.swift in Sources */, + F37103612E9E379E00E7F171 /* FASearchResultView.swift in Sources */, + F3A792F52E77F8A80097E0BC /* FAHomeRecommendedItemView.swift in Sources */, + F37103842EA0873B00E7F171 /* Dictionary+FAAdd.swift in Sources */, + F3A792F72E77F8A80097E0BC /* FAHomeNewView.swift in Sources */, + F3A792F82E77F8A80097E0BC /* FAHomeMustSeeShortView.swift in Sources */, + F3A793042E77FB110097E0BC /* FAHomeViewController.swift in Sources */, + F371034F2E9DFB2000E7F171 /* FASearchInputView.swift in Sources */, + F37103562E9E1FA500E7F171 /* FASearchRecordCell.swift in Sources */, + F37103792E9FA91C00E7F171 /* FAAboutHeaderView.swift in Sources */, + F3A792B12E77DFEE0097E0BC /* FALogin.swift in Sources */, + F3DCC0502E8A861300D58007 /* FAHUD.swift in Sources */, + F3DCC04D2E8A6F0D00D58007 /* FAScrollView.swift in Sources */, + F3DCC0572E8A8EE800D58007 /* FAMeViewController.swift in Sources */, + F3A792E82E77F8590097E0BC /* FAHomeModuleItem.swift in Sources */, + F3DCC0452E89530200D58007 /* CGMutablePath+FARoundedCorner.swift in Sources */, + F37103882EA08B6F00E7F171 /* FANetworkMonitor.swift in Sources */, + F37103672E9E3ABC00E7F171 /* FASearchResultCell.swift in Sources */, + F371037B2EA0820C00E7F171 /* FASettingViewController.swift in Sources */, + F3C9AE5D2E77DED000E25109 /* FADeviceIDManager.swift in Sources */, + F3A792BA2E77E1210097E0BC /* FAAPIPath.swift in Sources */, + F37103532E9E1E9300E7F171 /* FASearchRecordView.swift in Sources */, + F37103862EA087FB00E7F171 /* FAFeedbackViewController.swift in Sources */, + F3C9AE5B2E77DDE100E25109 /* FAKeychainHelper.swift in Sources */, + F371034D2E9DF9FB00E7F171 /* FASearchViewController.swift in Sources */, + F3A792B82E77E0EF0097E0BC /* FACryptorService.swift in Sources */, + F3A7932C2E796EF80097E0BC /* FAPlayerDetailControlView.swift in Sources */, + F3A798BC2E82AB6F0097E0BC /* FAEpSelectorView.swift in Sources */, + F37103512E9E1D7800E7F171 /* FASearchHomeView.swift in Sources */, + F3A792AF2E77DFB90097E0BC /* FATokenModel.swift in Sources */, + F38C25FA2E86A217008C22C3 /* UIView+FAAdd.swift in Sources */, + F3A7931A2E7911420097E0BC /* FAPagerViewTransformer.swift in Sources */, + F3DCC0672E8AA14A00D58007 /* FAMeItemModel.swift in Sources */, + F37103312E978F8C00E7F171 /* FACollectViewController.swift in Sources */, + F301F6472E974B6300E76A90 /* FARecommendPlayerControlView.swift in Sources */, + F3A792D62E77F70C0097E0BC /* FAShortPlayModel.swift in Sources */, + F37103472E9CF9EE00E7F171 /* FAHistoryCell.swift in Sources */, + F37103762E9FA15B00E7F171 /* FAAboutCell.swift in Sources */, + F37103412E97C20C00E7F171 /* UINavigationBar+FAAdd.swift in Sources */, + F3A792D82E77F70C0097E0BC /* FAShortDetailViewModel.swift in Sources */, + F37103802EA0839500E7F171 /* FABaseWebViewController.swift in Sources */, + F3A793002E77FA0C0097E0BC /* SwiftUIExtension.swift in Sources */, + F3A792D92E77F70C0097E0BC /* FAShortDetailModel.swift in Sources */, + F3A792DA2E77F70C0097E0BC /* FAPlayerDetailCell.swift in Sources */, + F3A792DB2E77F70C0097E0BC /* FAVideoInfoModel.swift in Sources */, + F3A7930C2E7813FE0097E0BC /* FACollectionView.swift in Sources */, + F37103822EA0868100E7F171 /* FAAppWebViewController.swift in Sources */, + F37103712E9F964000E7F171 /* FALocalized.swift in Sources */, + F3A792DC2E77F70C0097E0BC /* FAPlayerDetailViewController.swift in Sources */, + F38C25FF2E86B663008C22C3 /* AppDelegate+FAConfig.swift in Sources */, + F37103592E9E281C00E7F171 /* FASearchRecommendView.swift in Sources */, + F3A792BF2E77E4B80097E0BC /* FATool.swift in Sources */, + F371033F2E97BDF800E7F171 /* FAHistoryViewController.swift in Sources */, + F3DCC08B2E8BB16F00D58007 /* FARecommendViewController.swift in Sources */, + F3DCC0492E8A65B000D58007 /* FAEpSelectorCell.swift in Sources */, + F3A793162E790CC90097E0BC /* FAHomeBannerCell.swift in Sources */, + F3DCC04B2E8A6EAE00D58007 /* FAEpMenuView.swift in Sources */, + F3DCC0632E8A9E7600D58007 /* FAMeCell.swift in Sources */, + F3A793142E78FC4C0097E0BC /* FAHomeBannerContentCell.swift in Sources */, + F39E66372E77BAD0008AAAFA /* AppDelegate.swift in Sources */, + F3DCC08E2E8BB1F100D58007 /* FARecommendViewModel.swift in Sources */, + F371036B2E9E530400E7F171 /* UIStackView+FAAdd.swift in Sources */, + F3A792C42E77E8070097E0BC /* FATabBarController.swift in Sources */, + F3A792BC2E77E2EE0097E0BC /* String+FAAdd.swift in Sources */, + F3A792AD2E77DF830097E0BC /* FAUserInfo.swift in Sources */, + F3A792DF2E77F7EA0097E0BC /* FAAPI.swift in Sources */, + F3A7932A2E795B4C0097E0BC /* FAHomeSectionTitleView.swift in Sources */, + F3DCC05C2E8A9C1B00D58007 /* FATableView.swift in Sources */, + F37103492E9DD98600E7F171 /* UIScrollView+FARefresh.swift in Sources */, + F3A7931E2E793D000097E0BC /* FAHomeNewContentCell.swift in Sources */, + F39E66382E77BAD0008AAAFA /* SceneDelegate.swift in Sources */, + F371036E2E9E6E7800E7F171 /* FAEmpty.swift in Sources */, + F37103362E97929F00E7F171 /* FACollectCell.swift in Sources */, + F3A793532E7BA54A0097E0BC /* FAPlayerEpUIButton.swift in Sources */, + F3A792EA2E77F8820097E0BC /* FAHomeViewModel.swift in Sources */, + F3A792C82E77EED10097E0BC /* Font+FAAdd.swift in Sources */, + F3A792C12E77E6BA0097E0BC /* UIScreen+FAAdd.swift in Sources */, + F3DCC0912E8BBB7600D58007 /* FARecommendPlayerCell.swift in Sources */, + F3A798B92E828F5E0097E0BC /* FAPlayerProgressView.swift in Sources */, + F371035F2E9E2E7400E7F171 /* FASearchRecommendCell.swift in Sources */, + F3A793092E7812F60097E0BC /* FAWaterfallFlowLayout.swift in Sources */, + F37103732E9F9E0D00E7F171 /* FAAboutViewController.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + F39E66312E77BAD0008AAAFA /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + F39E66302E77BAD0008AAAFA /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; + F3A798B52E828C180097E0BC /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + F3A798B62E828C180097E0BC /* en */, + ); + name = Localizable.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + F39E65F92E77B826008AAAFA /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 196896C43C7C7895E473B9EB /* Pods-Fableon.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 8NNUR9HPV3; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = Fableon/Source/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = Fableon; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = ""; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = aaaaaa.Fableon; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_OBJC_BRIDGING_HEADER = "Fableon/Source/Fableon-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Debug; + }; + F39E65FA2E77B826008AAAFA /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = DC14083E24B746ED3DE2FE0C /* Pods-Fableon.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 8NNUR9HPV3; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = Fableon/Source/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = Fableon; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = ""; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = aaaaaa.Fableon; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_OBJC_BRIDGING_HEADER = "Fableon/Source/Fableon-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Release; + }; + F39E65FB2E77B826008AAAFA /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = 8NNUR9HPV3; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 18.5; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + F39E65FC2E77B826008AAAFA /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = 8NNUR9HPV3; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 18.5; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + F39E65E02E77B824008AAAFA /* Build configuration list for PBXProject "Fableon" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F39E65FB2E77B826008AAAFA /* Debug */, + F39E65FC2E77B826008AAAFA /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + F39E65F82E77B826008AAAFA /* Build configuration list for PBXNativeTarget "Fableon" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F39E65F92E77B826008AAAFA /* Debug */, + F39E65FA2E77B826008AAAFA /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = F39E65DD2E77B824008AAAFA /* Project object */; +} diff --git a/Fableon/App/AppDelegate+FAConfig.swift b/Fableon/App/AppDelegate+FAConfig.swift new file mode 100644 index 0000000..8c3dcd1 --- /dev/null +++ b/Fableon/App/AppDelegate+FAConfig.swift @@ -0,0 +1,33 @@ +// +// AppDelegate+FAConfig.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/26. +// + +import UIKit +import MJRefresh +import IQKeyboardManagerSwift +import IQKeyboardToolbarManager + + +extension AppDelegate { + + func fa_config() { + UIView.fa_Awake() + + FAToast.config() + + //设置刷新控件的语言 + MJRefreshConfig.default.languageCode = "en" + + IQKeyboardManager.shared.isEnabled = true + IQKeyboardManager.shared.resignOnTouchOutside = true + IQKeyboardToolbarManager.shared.isEnabled = false + + let appearance = UINavigationBarAppearance.defaultAppearance() + UINavigationBar.appearance().scrollEdgeAppearance = appearance + UINavigationBar.appearance().standardAppearance = appearance + } + +} diff --git a/Fableon/App/AppDelegate.swift b/Fableon/App/AppDelegate.swift new file mode 100644 index 0000000..da7a670 --- /dev/null +++ b/Fableon/App/AppDelegate.swift @@ -0,0 +1,52 @@ +// +// AppDelegate.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/15. +// + +import UIKit + +@main +class AppDelegate: UIResponder, UIApplicationDelegate { + + + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + FANetworkMonitor.manager.startMonitoring() + self.fa_config() + + NotificationCenter.default.addObserver(self, selector: #selector(networkStatusDidChangeNotification), name: FANetworkMonitor.networkStatusDidChangeNotification, object: nil) + + DispatchQueue.main.asyncAfter(wallDeadline: .now() + 0.2) { + if FANetworkMonitor.manager.isReachable == true { + FALogin.manager.requestUserInfo(completer: nil) + } + } + + return true + } + + // MARK: UISceneSession Lifecycle + + func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { + // Called when a new scene session is being created. + // Use this method to select a configuration to create the new scene with. + return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) + } + + func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { + // Called when the user discards a scene session. + // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. + // Use this method to release any resources that were specific to the discarded scenes, as they will not return. + } + + @objc private func networkStatusDidChangeNotification() { + + if FANetworkMonitor.manager.isReachable == true { + FALogin.manager.requestUserInfo(completer: nil) + } + + } +} + diff --git a/Fableon/App/SceneDelegate.swift b/Fableon/App/SceneDelegate.swift new file mode 100644 index 0000000..1e62cd1 --- /dev/null +++ b/Fableon/App/SceneDelegate.swift @@ -0,0 +1,54 @@ +// +// SceneDelegate.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/15. +// + +import UIKit + +class SceneDelegate: UIResponder, UIWindowSceneDelegate { + + var window: UIWindow? + + + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { + guard let windowScene = (scene as? UIWindowScene) else { return } + FATool.windowScene = windowScene + + window = UIWindow(windowScene: windowScene) + window?.rootViewController = FATabBarController() + window?.makeKeyAndVisible() + } + + func sceneDidDisconnect(_ scene: UIScene) { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). + } + + func sceneDidBecomeActive(_ scene: UIScene) { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. + } + + func sceneWillResignActive(_ scene: UIScene) { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). + } + + func sceneWillEnterForeground(_ scene: UIScene) { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. + } + + func sceneDidEnterBackground(_ scene: UIScene) { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. + } + + +} + diff --git a/Fableon/Base/Controller/FANavigationController.swift b/Fableon/Base/Controller/FANavigationController.swift new file mode 100644 index 0000000..b3275d1 --- /dev/null +++ b/Fableon/Base/Controller/FANavigationController.swift @@ -0,0 +1,43 @@ +// +// FANavigationController.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/15. +// + +import UIKit +import FDFullscreenPopGesture + +class FANavigationController: UINavigationController { + + override func viewDidLoad() { + super.viewDidLoad() + fd_fullscreenPopGestureRecognizer.isEnabled = true + } + + override func pushViewController(_ viewController: UIViewController, animated: Bool) { + if children.count > 0 { + viewController.hidesBottomBarWhenPushed = true + } + super.pushViewController(viewController, animated: animated) + } + + override func setViewControllers(_ viewControllers: [UIViewController], animated: Bool) { + for (index, value) in viewControllers.enumerated() { + if index != 0 { + value.hidesBottomBarWhenPushed = true + } + } + super.setViewControllers(viewControllers, animated: animated) + } + + + override var childForStatusBarStyle: UIViewController? { + return self.topViewController + } + + override var childForStatusBarHidden: UIViewController? { + return self.topViewController + } + +} diff --git a/Fableon/Base/Controller/FATabBarController.swift b/Fableon/Base/Controller/FATabBarController.swift new file mode 100644 index 0000000..c8ec2f8 --- /dev/null +++ b/Fableon/Base/Controller/FATabBarController.swift @@ -0,0 +1,64 @@ +// +// FATabBarController.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/15. +// + +import UIKit + +class FATabBarController: UITabBarController { + + override func viewDidLoad() { + super.viewDidLoad() + + let nav1 = getNavigation(FAHomeViewController(), "Home".localized, UIImage(named: "tabbar_home_icon"), UIImage(named: "tabbar_home_icon_selected")) + let nav2 = getNavigation(FARecommendViewController(), "Recommend".localized, UIImage(named: "tabbar_recommend_icon"), UIImage(named: "tabbar_recommend_icon_selected")) + let nav3 = getNavigation(FACollectViewController(), "Collect".localized, UIImage(named: "tabbar_collect_icon"), UIImage(named: "tabbar_collect_icon_selected")) + let nav4 = getNavigation(FAMeViewController(), "Me".localized, UIImage(named: "tabbar_me_icon"), UIImage(named: "tabbar_me_icon_selected")) + + viewControllers = [nav1, nav2, nav3, nav4] + + + let appearance = UITabBarAppearance() + appearance.backgroundColor = .init(named: .color_0D0D0D) + appearance.backgroundImage = UIImage() + appearance.shadowColor = .clear + appearance.shadowImage = UIImage() + appearance.stackedLayoutAppearance.normal.titleTextAttributes = [ + .font : UIFont.font(ofSize: 10, weight: .init(500)), + .foregroundColor : UIColor(named: .color_777777)! + ] + appearance.stackedLayoutAppearance.selected.titleTextAttributes = [ + .font : UIFont.font(ofSize: 10, weight: .init(500)), + .foregroundColor : UIColor(named: .color_3769FC)! + ] + + + self.tabBar.scrollEdgeAppearance = appearance + self.tabBar.standardAppearance = appearance + self.tabBar.isTranslucent = false + + } + + override var childForStatusBarStyle: UIViewController? { + return self.selectedViewController + } + + override var childForStatusBarHidden: UIViewController? { + return self.selectedViewController + } +} + + +extension FATabBarController { + + private func getNavigation(_ viewController: UIViewController, _ title: String, _ image: UIImage?, _ selectedImage: UIImage?) -> UINavigationController { + let nav = FANavigationController(rootViewController: viewController) + nav.tabBarItem.title = title + nav.tabBarItem.image = image + nav.tabBarItem.selectedImage = selectedImage + return nav + } + +} diff --git a/Fableon/Base/Controller/FAViewController.swift b/Fableon/Base/Controller/FAViewController.swift new file mode 100644 index 0000000..144f65f --- /dev/null +++ b/Fableon/Base/Controller/FAViewController.swift @@ -0,0 +1,93 @@ +// +// FAViewController.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/15. +// + +import UIKit + +class FAViewController: UIViewController { + + lazy var bgView: UIView = { + let view = UIImageView(image: UIImage(named: "背景")) + return view + }() + + override func viewDidLoad() { + super.viewDidLoad() + self.edgesForExtendedLayout = [.top] + + if let navi = navigationController { + if navi.visibleViewController == self { + if navi.viewControllers.count > 1 { + configNavigationBack() + } + } + } + + view.addSubview(bgView) + bgView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + } + + + func handleHeaderRefresh(_ completer: (() -> Void)?) { + completer?() + } + + func handleFooterRefresh(_ completer: (() -> Void)?) { + completer?() + } + + override var preferredStatusBarStyle: UIStatusBarStyle { + return .lightContent + } + +} + +extension UIViewController { + func configNavigationBack(_ imageName: String = "Frame 3011") { + let image = UIImage(named: imageName) + + let leftBarButtonItem = UIBarButtonItem(image: image, style: .plain ,target: self,action: #selector(handleNavigationBack)) + navigationItem.leftBarButtonItem = leftBarButtonItem + } + + @objc func handleNavigationBack() { + self.fa_toLastViewController(animated: true) + } + + func fa_toLastViewController(animated: Bool) { + if self.navigationController != nil + { + if self.navigationController?.viewControllers.count == 1 + { + self.dismiss(animated: animated, completion: nil) + } else { + self.navigationController?.popViewController(animated: animated) + } + } + else if self.presentingViewController != nil { + self.dismiss(animated: animated, completion: nil) + } + } +} + +extension UIViewController { + + func fa_setNavigationStyle(backgroundColor: UIColor = .clear, + titleFont: UIFont = .font(ofSize: 18, weight: .bold), + titleColor: UIColor = .FFFFFF, + isTranslucent: Bool = true + ) { + self.navigationController?.navigationBar.fa_setTranslucent(isTranslucent: isTranslucent) + self.navigationController?.navigationBar.fa_setBackgroundColor(backgroundColor: backgroundColor) + self.navigationController?.navigationBar.fa_setTitleTextAttributes(titleTextAttributes: [ + NSAttributedString.Key.font : titleFont, + NSAttributedString.Key.foregroundColor : titleColor + ]) + } + +} diff --git a/Fableon/Base/Define/FADefine.swift b/Fableon/Base/Define/FADefine.swift new file mode 100644 index 0000000..7f3aa81 --- /dev/null +++ b/Fableon/Base/Define/FADefine.swift @@ -0,0 +1,39 @@ +// +// FADefine.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/26. +// + +import UIKit + + +///当前系统版本号 +let kFAOsVersion: String = UIDevice.current.systemVersion +let kBRAPPBundleIdentifier: String = (Bundle.main.infoDictionary!["CFBundleIdentifier"] as? String) ?? "0" + +///app版本号 +let kFAAPPVersion: String = (Bundle.main.infoDictionary!["CFBundleShortVersionString"] as? String) ?? "0" +let kFAAPPBundleVersion: String = (Bundle.main.infoDictionary!["CFBundleVersion"] as? String) ?? "0" + +let kFAAPPBundleName: String = (Bundle.main.infoDictionary!["CFBundleName"] as? String) ?? "" +let kFAAPPName: String = (Bundle.main.infoDictionary!["CFBundleDisplayName"] as? String) ?? "" + + + +public func fa_swizzled_instanceMethod(_ prefix: String, oldClass: Swift.AnyClass!, oldSelector: String, newClass: Swift.AnyClass) { + let newSelector = prefix + "_" + oldSelector; + let originalSelector = NSSelectorFromString(oldSelector) + let swizzledSelector = NSSelectorFromString(newSelector) + + let originalMethod = class_getInstanceMethod(oldClass, originalSelector) + let swizzledMethod = class_getInstanceMethod(newClass, swizzledSelector) + + let isAdd = class_addMethod(oldClass, originalSelector, method_getImplementation(swizzledMethod!), method_getTypeEncoding(swizzledMethod!)) + + if isAdd { + class_replaceMethod(newClass, swizzledSelector, method_getImplementation(originalMethod!), method_getTypeEncoding(originalMethod!)) + }else { + method_exchangeImplementations(originalMethod!, swizzledMethod!) + } +} diff --git a/Fableon/Base/Extension/CGMutablePath+FARoundedCorner.swift b/Fableon/Base/Extension/CGMutablePath+FARoundedCorner.swift new file mode 100644 index 0000000..6072ce4 --- /dev/null +++ b/Fableon/Base/Extension/CGMutablePath+FARoundedCorner.swift @@ -0,0 +1,65 @@ +// +// CGMutablePath+FARoundedCorner.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/28. +// + +import UIKit + +struct FARoundedCorner { + var topLeft:CGFloat = 0 + var topRight:CGFloat = 0 + var bottomLeft:CGFloat = 0 + var bottomRight:CGFloat = 0 + + public static let zero = FARoundedCorner(topLeft: 0, topRight: 0, bottomLeft: 0, bottomRight: 0) + public init(topLeft: CGFloat, topRight:CGFloat, bottomLeft:CGFloat, bottomRight:CGFloat) { + self.topLeft = topLeft + self.topRight = topRight + self.bottomLeft = bottomLeft + self.bottomRight = bottomRight + } + static func ==(v1:FARoundedCorner, v2:FARoundedCorner) -> Bool { + return v1.bottomLeft == v2.bottomLeft + && v1.bottomRight == v2.bottomRight + && v1.topLeft == v2.topLeft + && v1.topRight == v2.topRight + } + static func !=(v1:FARoundedCorner, v2:FARoundedCorner) -> Bool { + return !(v1 == v2) + } +} + +extension CGMutablePath { + func addRadiusRectangle(_ circulars: FARoundedCorner, rect: CGRect) { + let minX = rect.minX + let minY = rect.minY + let maxX = rect.maxX + let maxY = rect.maxY + + //获取四个圆心 + let topLeftCenterX = minX + circulars.topLeft + let topLeftCenterY = minY + circulars.topLeft + + let topRightCenterX = maxX - circulars.topRight + let topRightCenterY = minY + circulars.topRight + + let bottomLeftCenterX = minX + circulars.bottomLeft + let bottomLeftCenterY = maxY - circulars.bottomLeft + + let bottomRightCenterX = maxX - circulars.bottomRight + let bottomRightCenterY = maxY - circulars.bottomRight + + //顶 左 + addArc(center: CGPoint(x: topLeftCenterX, y: topLeftCenterY), radius: circulars.topLeft, startAngle: CGFloat.pi, endAngle: CGFloat.pi * 3 / 2, clockwise: false) + //顶右 + addArc(center: CGPoint(x: topRightCenterX, y: topRightCenterY), radius: circulars.topRight, startAngle: CGFloat.pi * 3 / 2, endAngle: 0, clockwise: false) + //底右 + addArc(center: CGPoint(x: bottomRightCenterX, y: bottomRightCenterY), radius: circulars.bottomRight, startAngle: 0, endAngle: CGFloat.pi / 2, clockwise: false) + //底左 + addArc(center: CGPoint(x: bottomLeftCenterX, y: bottomLeftCenterY), radius: circulars.bottomLeft, startAngle: CGFloat.pi / 2, endAngle: CGFloat.pi, clockwise: false) + closeSubpath(); + + } +} diff --git a/Fableon/Base/Extension/Dictionary+FAAdd.swift b/Fableon/Base/Extension/Dictionary+FAAdd.swift new file mode 100644 index 0000000..09c1541 --- /dev/null +++ b/Fableon/Base/Extension/Dictionary+FAAdd.swift @@ -0,0 +1,23 @@ +// +// Dictionary+FAAdd.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/16. +// + +import UIKit + +extension Dictionary { + + func toJsonString() -> String? { + do { + let data = try JSONSerialization.data(withJSONObject: self) + let jsonStr = String(data: data, encoding: .utf8) + return jsonStr + } catch { + + } + return nil + } + +} diff --git a/Fableon/Base/Extension/Font+FAAdd.swift b/Fableon/Base/Extension/Font+FAAdd.swift new file mode 100644 index 0000000..5af2085 --- /dev/null +++ b/Fableon/Base/Extension/Font+FAAdd.swift @@ -0,0 +1,24 @@ +// +// Font+FAAdd.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/15. +// + +import UIKit +import SwiftUICore + +extension Font { + + static func font(size: CGFloat, weight: Font.Weight) -> Font { + return Font.system(size: size, weight: weight) + } +} + +extension UIFont { + + static func font(ofSize: CGFloat, weight: UIFont.Weight) -> UIFont { + return UIFont.systemFont(ofSize: ofSize, weight: weight) + } + +} diff --git a/Fableon/Base/Extension/String+FAAdd.swift b/Fableon/Base/Extension/String+FAAdd.swift new file mode 100644 index 0000000..9175be2 --- /dev/null +++ b/Fableon/Base/Extension/String+FAAdd.swift @@ -0,0 +1,41 @@ +// +// String+FAAdd.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/15. +// + +import Foundation +import SmartCodable +import YYCategories + +extension String: SmartCodable { + + static func timeZone() -> String { + let timeZone = NSTimeZone.local as NSTimeZone + let timeZoneSecondsFromGMT = timeZone.secondsFromGMT / 3600 + return String(format: "GMT+0%d:00", timeZoneSecondsFromGMT) + } + + func size(_ font: UIFont, _ size: CGSize) -> CGSize { + return (self as NSString).size(for: font, size: size, mode: .byWordWrapping) + } + +} + +extension String { + static let color_FFFFFF = "#FFFFFF" + static let color_000000 = "#000000" + static let color_3769FC = "#3769FC" + static let color_777777 = "#777777" + static let color_0D0D0D = "#0D0D0D" + static let color_81CAFF = "#81CAFF" + static let color_20A2FF = "#20A2FF" + static let color_DDEDFD = "#DDEDFD" + static let color_A8DBFF = "#A8DBFF" + static let color_BEDFFF = "#BEDFFF" + static let color_52A2F1 = "#52A2F1" + static let color_C7DEF5 = "#C7DEF5" + static let color_333333 = "#333333" + static let color_D9D9D9 = "#D9D9D9" +} diff --git a/Fableon/Base/Extension/UI/SwiftUIExtension.swift b/Fableon/Base/Extension/UI/SwiftUIExtension.swift new file mode 100644 index 0000000..46f0058 --- /dev/null +++ b/Fableon/Base/Extension/UI/SwiftUIExtension.swift @@ -0,0 +1,80 @@ +// +// SwiftUIExtension.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/15. +// + +import SwiftUI + +struct FAOnFirstAppear: ViewModifier { + @State private var hasAppeared = false + let action: () -> Void + + func body(content: Content) -> some View { + content.onAppear { + if !hasAppeared { + hasAppeared = true + action() + } + } + } +} + +struct FAGradientBorder: ViewModifier { + var colors: [Color] = [.red, .blue] + var lineWidth: CGFloat = 4 + var cornerRadius: CGFloat = 16 + var startPoint: UnitPoint = .topLeading + var endPoint: UnitPoint = .bottomTrailing + + func body(content: Content) -> some View { + content + .overlay( + RoundedRectangle(cornerRadius: cornerRadius) + .stroke( + LinearGradient( + gradient: Gradient(colors: colors), + startPoint: startPoint, + endPoint: endPoint + ), + lineWidth: lineWidth + ) + ) + .clipShape(RoundedRectangle(cornerRadius: cornerRadius)) + } +} + + +extension View { + func onFirstAppear(perform action: @escaping () -> Void) -> some View { + self.modifier(FAOnFirstAppear(action: action)) + } + + func gradientBorder( + colors: [Color] = [.red, .blue], + lineWidth: CGFloat = 4, + cornerRadius: CGFloat = 16, + startPoint: UnitPoint = .topLeading, + endPoint: UnitPoint = .bottomTrailing + ) -> some View { + self.modifier(FAGradientBorder(colors: colors, + lineWidth: lineWidth, + cornerRadius: cornerRadius, + startPoint: startPoint, + endPoint: endPoint)) + } + + func setBackground() -> some View { + self.background( + Image("背景") + .resizable() + .scaledToFill() + .ignoresSafeArea() + .clipped() + ) + } + + + +} diff --git a/Fableon/Base/Extension/UINavigationBar+FAAdd.swift b/Fableon/Base/Extension/UINavigationBar+FAAdd.swift new file mode 100644 index 0000000..4e3de55 --- /dev/null +++ b/Fableon/Base/Extension/UINavigationBar+FAAdd.swift @@ -0,0 +1,49 @@ +// +// UINavigationBar+FAAdd.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/9. +// + +import UIKit + +extension UINavigationBarAppearance { + static func defaultAppearance() -> UINavigationBarAppearance { + let navBarAppearance = UINavigationBarAppearance() + navBarAppearance.configureWithOpaqueBackground() + navBarAppearance.backgroundColor = .clear + navBarAppearance.backgroundEffect = nil + navBarAppearance.shadowColor = UIColor.clear + navBarAppearance.titleTextAttributes = [ + NSAttributedString.Key.font : UIFont.font(ofSize: 18, weight: .bold), + NSAttributedString.Key.foregroundColor : UIColor.FFFFFF + ] + return navBarAppearance + } +} + +extension UINavigationBar { + + + func fa_setTranslucent(isTranslucent: Bool) { + self.isTranslucent = isTranslucent + } + + func fa_setBackgroundColor(backgroundColor: UIColor?) { + let appearance = self.standardAppearance + appearance.backgroundColor = backgroundColor + self.standardAppearance = appearance + self.scrollEdgeAppearance = appearance + } + + func fa_setTitleTextAttributes(titleTextAttributes: [NSAttributedString.Key : Any]?) { + let appearance = self.standardAppearance + + if let titleTextAttributes = titleTextAttributes { + appearance.titleTextAttributes = titleTextAttributes + } + self.scrollEdgeAppearance = appearance + self.standardAppearance = appearance + + } +} diff --git a/Fableon/Base/Extension/UIScreen+FAAdd.swift b/Fableon/Base/Extension/UIScreen+FAAdd.swift new file mode 100644 index 0000000..758882b --- /dev/null +++ b/Fableon/Base/Extension/UIScreen+FAAdd.swift @@ -0,0 +1,40 @@ +// +// Screen+FAAdd.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/15. +// + + +import UIKit + +extension UIScreen { + + static var screen: UIScreen { + return UIScreen.main + } + + static var width: CGFloat { + return UIScreen.main.bounds.width + } + + static var height: CGFloat { + return UIScreen.main.bounds.height + } + + static var safeTop: CGFloat { + return FATool.keyWindow?.safeAreaInsets.top ?? 20 + } + + static var safeBottom: CGFloat { + return FATool.keyWindow?.safeAreaInsets.bottom ?? 0 + } + + static var navBarHeight: CGFloat { + return safeTop + 44 + } + + static var tabBarHeight: CGFloat { + return safeBottom + 49 + } +} diff --git a/Fableon/Base/Extension/UIScrollView+FARefresh.swift b/Fableon/Base/Extension/UIScrollView+FARefresh.swift new file mode 100644 index 0000000..35e94ca --- /dev/null +++ b/Fableon/Base/Extension/UIScrollView+FARefresh.swift @@ -0,0 +1,70 @@ +// +// UIScrollView+FARefresh.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/14. +// + +import MJRefresh + +extension UIScrollView { + + func fa_addRefreshHeader(insetTop: CGFloat = 0, block: (() -> Void)?) { + + self.mj_header = MJRefreshNormalHeader(refreshingBlock: { + block?() + }) + self.mj_header?.ignoredScrollViewContentInsetTop = insetTop + } + + func fa_addRefreshFooter(insetBottom: CGFloat = 0, block: (() -> Void)?) { + let footer = MJRefreshAutoNormalFooter(refreshingBlock: { + block?() + }) + footer.ignoredScrollViewContentInsetBottom = insetBottom + + self.mj_footer = footer + } + + + func fa_addRefreshBackFooter(insetBottom: CGFloat = 0, block: (() -> Void)?) { + self.mj_footer = MJRefreshBackNormalFooter(refreshingBlock: { + block?() + }) + + self.mj_footer?.ignoredScrollViewContentInsetBottom = insetBottom + } + + func fa_endHeaderRefreshing() { + self.mj_header?.endRefreshing() + } + + func fa_endFooterRefreshing() { + if self.mj_footer?.state == .noMoreData { return } + self.mj_footer?.endRefreshing() + } + + ///重置没有更多 + func fa_resetNoMoreData() { + self.mj_footer?.resetNoMoreData() + } + + func fa_endRefreshingWithNoMoreData() { + self.mj_footer?.endRefreshingWithNoMoreData() + } + + func fa_updateNoMoreDataState(_ hasNextPage: Bool?) { + if hasNextPage == false { + self.fa_endRefreshingWithNoMoreData() + } else { + self.fa_resetNoMoreData() + } + + if self.mj_totalDataCount() == 0 { + self.mj_footer?.isHidden = true + } else { + self.mj_footer?.isHidden = false + } + + } +} diff --git a/Fableon/Base/Extension/UIStackView+FAAdd.swift b/Fableon/Base/Extension/UIStackView+FAAdd.swift new file mode 100644 index 0000000..12519a4 --- /dev/null +++ b/Fableon/Base/Extension/UIStackView+FAAdd.swift @@ -0,0 +1,21 @@ +// +// UIStackView+FAAdd.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/14. +// + +import UIKit + + +extension UIStackView { + + func fa_removeAllArrangedSubview() { + let arrangedSubviews = self.arrangedSubviews + + arrangedSubviews.forEach { + self.removeArrangedSubview($0) + $0.removeFromSuperview() + } + } +} diff --git a/Fableon/Base/Extension/UIView+FAAdd.swift b/Fableon/Base/Extension/UIView+FAAdd.swift new file mode 100644 index 0000000..67aafe6 --- /dev/null +++ b/Fableon/Base/Extension/UIView+FAAdd.swift @@ -0,0 +1,95 @@ +// +// UIView+FAAdd.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/26. +// + +import UIKit + +extension UIView { + fileprivate struct AssociatedKeys { + static var fa_roundedCorner: Int? + static var fa_effect: Int? + } + + @objc public static func fa_Awake() { + fa_swizzled_instanceMethod("fa", oldClass: self, oldSelector: "layoutSubviews", newClass: self) + } + + @objc func fa_layoutSubviews() { + fa_layoutSubviews() + + _updateRoundedCorner() + + if let effectView = effectView, effectView.frame != self.bounds { + effectView.frame = self.bounds + } + } +} + +//MARK: -------------- 圆角 -------------- +extension UIView { + + + private var roundedCorner: FARoundedCorner? { + get { + return objc_getAssociatedObject(self, &AssociatedKeys.fa_roundedCorner) as? FARoundedCorner + } + set { + objc_setAssociatedObject(self, &AssociatedKeys.fa_roundedCorner, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) + } + } + ///设置圆角 + func fa_setRoundedCorner(topLeft: CGFloat, topRight: CGFloat, bottomLeft: CGFloat, bottomRight: CGFloat) { + //清空其它设置方法 + self.roundedCorner = FARoundedCorner(topLeft: topLeft, topRight: topRight, bottomLeft: bottomLeft, bottomRight: bottomRight) + _updateRoundedCorner() + } + + private func _updateRoundedCorner() { + guard let roundedCorner = self.roundedCorner else { return } + let rect = self.bounds + + let path = CGMutablePath() + path.addRadiusRectangle(roundedCorner, rect: rect) + + let maskLayer = CAShapeLayer() + maskLayer.frame = self.bounds + maskLayer.path = path + self.layer.mask = maskLayer + } + +} + + + +//MARK: -------------- 模糊效果 -------------- +extension UIView { + private var effectView: UIVisualEffectView? { + get { + return objc_getAssociatedObject(self, &AssociatedKeys.fa_effect) as? UIVisualEffectView + } + set { + objc_setAssociatedObject(self, &AssociatedKeys.fa_effect, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) + } + } + + ///添加模糊效果 + func fa_addEffectView(style: UIBlurEffect.Style = .light) { + if self.effectView == nil { + let blur = UIBlurEffect(style: style) + let effectView = UIVisualEffectView(effect: blur) + effectView.isUserInteractionEnabled = false + self.addSubview(effectView) + self.sendSubviewToBack(effectView) + + self.effectView = effectView + } + } + ///删除模糊效果 + func fa_removeEffectView() { + self.effectView?.removeFromSuperview() + self.effectView = nil + } +} diff --git a/Fableon/Base/Extension/UserDefaults+FAAdd.swift b/Fableon/Base/Extension/UserDefaults+FAAdd.swift new file mode 100644 index 0000000..a695961 --- /dev/null +++ b/Fableon/Base/Extension/UserDefaults+FAAdd.swift @@ -0,0 +1,39 @@ +// +// UserDefaults+FAAdd.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/15. +// + +import Foundation + +extension UserDefaults { + + static func fa_setObject(_ obj: NSSecureCoding?, forKey key: String) { + let defaults = UserDefaults.standard + guard let obj = obj else { + defaults.removeObject(forKey: key) + return + } + do { + let data = try NSKeyedArchiver.archivedData(withRootObject: obj, requiringSecureCoding: true) + defaults.set(data, forKey: key) + } catch { + print("Error archiving object: \(error)") + } + } + + static func fa_object(forKey key: String, as type: T.Type) -> T? { + let defaults = UserDefaults.standard + guard let data = defaults.data(forKey: key) else { + return nil + } + do { + let object = try NSKeyedUnarchiver.unarchivedObject(ofClass: type, from: data) + return object + } catch { + print("Error unarchiving object: \(error)") + return nil + } + } +} diff --git a/Fableon/Base/Request/FAAPI/FAAPI.swift b/Fableon/Base/Request/FAAPI/FAAPI.swift new file mode 100644 index 0000000..71fe0f2 --- /dev/null +++ b/Fableon/Base/Request/FAAPI/FAAPI.swift @@ -0,0 +1,161 @@ +// +// FAAPI.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/15. +// + +import UIKit + +extension FAAPI { + ///更新短剧关注状态 [ "state" : isCollect, "id" : shortPlayId,] + static let updateShortCollectStateNotification = NSNotification.Name(rawValue: "FAAPI.updateShortCollectStateNotification") + +} + +struct FAAPI { + + static func requestHomeModulesData(completer: ((_ list: [FAHomeModuleItem]?) -> Void)?) { + FANetworkManager.manager.request(FABaseURL + "/home/all-modules", method: .get) { (response: FANetworkManager.Response>) in + completer?(response.data?.list) + } + } + + static func requestShortDetailData(shortPlayId: String, activityId: String? = nil, completer: ((FAShortDetailModel?, Int?, String?) -> Void)?) { + + var parameters: [String : Any] = [ + "short_play_id" : shortPlayId, + "video_id" : "0" + ] + + if let activityId = activityId { + parameters["activity_id"] = activityId + } + + FANetworkManager.manager.request(FABaseURL + "/getVideoDetails", method: .get, parameters: parameters) { (response: FANetworkManager.Response) in + if response.isSuccess { + completer?(response.data, response.code, response.msg) + } else { + completer?(nil, response.code, response.msg) + } + } + + } + + static func requestCreatePlayHistory(videoId: String?, shortPlayId: String?) { + guard let shortPlayId = shortPlayId else { return } + + let parameters = [ + "video_id" : videoId ?? "0", + "short_play_id" : shortPlayId + ] + + FANetworkManager.manager.request(FABaseURL + "/createHistory", method: .post, parameters: parameters, isToast: false) { (response: FANetworkManager.Response) in + + } + } + + ///历史记录列表 + static func requestPlayHistorys(page: Int, pageSize: Int = 20, completer: ((_ listModel: FANetworkManager.List?) -> Void)?) { + + let parameters = [ + "current_page" : page, + "page_size" : pageSize + ] + + FANetworkManager.manager.request(FABaseURL + "/myHistorys", method: .get, parameters: parameters, isToast: false) { (response: FANetworkManager.Response>) in + completer?(response.data) + } + } + + ///收藏 + static func requestShortCollect(isCollect: Bool, shortPlayId: String, videoId: String?, isLoding: Bool = true, success: (() -> Void)?, failure: (() -> Void)? = nil) { + let path: String + if isCollect { + path = "/collect" + } else { + path = "/cancelCollect" + } + + var parameters: [String : Any] = [ + "short_play_id" : shortPlayId, + ] + + if let videoId = videoId { + parameters["video_id"] = videoId + } + + FANetworkManager.manager.request(FABaseURL + path, + parameters: parameters, + isLoding: true) { (response: FANetworkManager.Response) in + if response.isSuccess { + success?() + NotificationCenter.default.post(name: FAAPI.updateShortCollectStateNotification, object: nil, userInfo: [ + "state" : isCollect, + "id" : shortPlayId, + ]) + } else { + failure?() + } + } + } + + ///推荐短剧 + static func requestRecommendVideo(page: Int, completer: ((_ listModel: FANetworkManager.List?) -> Void)?) { + + let parameters: [String : Any] = [ + "page_size" : 20, + "current_page" : page + ] + + FANetworkManager.manager.request(FABaseURL + "/getRecommands", + method: .get, + parameters: parameters, + isLoding: false) { (response: FANetworkManager.Response>) in + completer?(response.data) + } + } + + ///收藏列表 + static func requestCollectList(page: Int, completer: ((_ listModel: FANetworkManager.List?) -> Void)?) { + let parameters: [String : Any] = [ + "page_size" : 20, + "current_page" : page + ] + + FANetworkManager.manager.request(FABaseURL + "/myCollections", + method: .get, + parameters: parameters, + isLoding: false) { (response: FANetworkManager.Response>) in + completer?(response.data) + } + } + + ///热门搜索 + static func requestHotSearchData(completer: ((_ list: [FAShortPlayModel]?) -> Void)?) { + + FANetworkManager.manager.request(FABaseURL + "/search/hots", + method: .get, + parameters: nil, + isToast: false) { (response: FANetworkManager.Response>) in + completer?(response.data?.list) + } + } + + ///搜索 + static func requestSearch(text: String, completer: ((_ list: [FAShortPlayModel]?) -> Void)?) { + let parameters = [ + "search" : text + ] + + FANetworkManager.manager.request(FABaseURL + "/search", + method: .get, + parameters: parameters, + isToast: true) { (response: FANetworkManager.Response>) in + completer?(response.data?.list) + } + } +} + + + diff --git a/Fableon/Base/Request/FAAPIPath.swift b/Fableon/Base/Request/FAAPIPath.swift new file mode 100644 index 0000000..007e1e3 --- /dev/null +++ b/Fableon/Base/Request/FAAPIPath.swift @@ -0,0 +1,20 @@ +// +// FAAPIPath.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/15. +// + +let FABaseURL = "https://api-breeltv.breeltv.com/reel" +let FAWebBaseURL = "https://www.breeltv.com" +let FACampaignWebURL = "https://campaign.breeltv.com" + + + + +///反馈首页 +let kFAFeedBackHomeWebUrl = FACampaignWebURL + "/pages/leave/index" +///反馈列表 +let kFAFeedBackListWebUrl = FACampaignWebURL + "/pages/leave/list" +///反馈详情 +let kFAFeedBackDetailWebUrl = FACampaignWebURL + "/pages/leave/detail" diff --git a/Fableon/Base/Request/FACryptorService.swift b/Fableon/Base/Request/FACryptorService.swift new file mode 100644 index 0000000..3743b19 --- /dev/null +++ b/Fableon/Base/Request/FACryptorService.swift @@ -0,0 +1,95 @@ +// +// FACryptorService.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/15. +// + +import Foundation + +struct FACryptorService { + + static func decrypt(data: String) -> String { + guard data.hasPrefix("$") else { + return data + } + + let decryptedData = deStrBytes(data: data) + return String(data: decryptedData, encoding: .utf8) ?? "" + } + + static func deStrBytes(data: String) -> Data { + let hexData = String(data.dropFirst()) + var bytes = Data() + + var index = hexData.startIndex + while index < hexData.endIndex { + let nextIndex = hexData.index(index, offsetBy: 2, limitedBy: hexData.endIndex) ?? hexData.endIndex + let byteString = String(hexData[index.. Data { + guard !data.isEmpty else { + return data + } + + let saltLen = Int(data[data.startIndex]) + guard data.count >= 1 + saltLen else { + return data + } + + let salt = data.subdata(in: 1..<1+saltLen) + let encryptedData = data.subdata(in: 1+saltLen.. Data { + let decryptedData = cxEd(data: data) + return removeSalt(data: decryptedData, salt: salt) + } + + // 加密/解密数据(按位取反) + static func cxEd(data: Data) -> Data { + return Data(data.map { $0 ^ 0xFF }) + } + + // 从数据中移除盐值 + static func removeSalt(data: Data, salt: Data) -> Data { + guard !salt.isEmpty else { + return data + } + + var result = Data() + let saltBytes = [UInt8](salt) + let saltCount = saltBytes.count + + for (index, byte) in data.enumerated() { + let saltByte = saltBytes[index % saltCount] + let decryptedByte = calRemoveSalt(v: byte, s: saltByte) + result.append(decryptedByte) + } + + return result + } + + // 计算移除盐值后的字节 + static func calRemoveSalt(v: UInt8, s: UInt8) -> UInt8 { + if v >= s { + return v - s + } else { + return UInt8(0xFF) - (s - v) + 1 + } + } +} diff --git a/Fableon/Base/Request/FANetworkManager.swift b/Fableon/Base/Request/FANetworkManager.swift new file mode 100644 index 0000000..10cd49d --- /dev/null +++ b/Fableon/Base/Request/FANetworkManager.swift @@ -0,0 +1,232 @@ +// +// FANetworkManager.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/15. +// + +import Foundation +import Alamofire +import AdSupport +import SmartCodable +import YYCategories + +/// 网络请求封装 +class FANetworkManager { + + static let manager = FANetworkManager() + + private let operationQueue = OperationQueue() + private var tokenOperation: BlockOperation? + + // 通用请求方法 + func request( + _ url: String, + method: HTTPMethod = .post, + parameters: Parameters? = nil, + isLoding: Bool = false, + isToast: Bool = true, + completion: ((_ response: FANetworkManager.Response) -> Void)? + ) { + if FALogin.manager.token == nil, !isTokenUrl(url) { + self.requestUserToken(completer: nil) + } + + if let _ = self.tokenOperation, !isTokenUrl(url) { + requestAddQueue(url, method: method, parameters: parameters, isLoding: isLoding, isToast: isToast, completion: completion) + return + } + + _request(url, method: method, parameters: parameters, isLoding: isLoding, isToast: isToast, completion: completion) + } + + private func _request( + _ url: String, + method: HTTPMethod = .get, + parameters: Parameters? = nil, + isLoding: Bool, + isToast: Bool, + completion: ((_ response: FANetworkManager.Response) -> Void)? + ) { + if isLoding { + FAHUD.show() + } + AF.request( + url, + method: method, + parameters: parameters, + encoding: method == .get ? URLEncoding.default : JSONEncoding.default, + headers: self.headers + ) + .responseString(completionHandler: { response in + if isLoding { + FAHUD.dismiss() + } + let code = response.response?.statusCode + + if code == 401 || code == 402 || code == 403 { + if self.isTokenUrl(url) { + var response = FANetworkManager.Response() + response.code = -1 + completion?(response) + } else { + self.requestUserToken { + if FALogin.manager.token != nil { + FALogin.manager.requestUserInfo(completer: nil) + } + } + + if let _ = self.tokenOperation, !self.isTokenUrl(url) { + self.requestAddQueue(url, method: method, parameters: parameters, isLoding: isLoding, isToast: isToast, completion: completion) + } + } + return + } + + + switch response.result { + case .success(let data): + let decrypted = FACryptorService.decrypt(data: data) + if let parameters = parameters { + debugLog(parameters) + } + debugLog(url) + debugLog(decrypted) + if let response = FANetworkManager.Response.deserialize(from: decrypted) { + completion?(response) + } else { + if isToast { + FAToast.show(text: "Error".localized) + } + var res = FANetworkManager.Response() + res.code = -1 + res.msg = "解析错误" + completion?(res) + } + case .failure(let error): + if isToast { + FAToast.show(text: "network_error_01".localized) + } + + var res = FANetworkManager.Response() + res.code = error.responseCode + res.msg = error.localizedDescription + completion?(res) + } + }) + } + + + + +} + +extension FANetworkManager { + + private func requestUserToken(completer: (() -> Void)?) { + guard self.tokenOperation == nil else { + completer?() + return + } + self.tokenOperation = BlockOperation(block: { + let semaphore = DispatchSemaphore(value: 0) + + FALogin.manager.requestUserToken { + do { semaphore.signal() } + self.tokenOperation = nil + completer?() + } + semaphore.wait() + }) + operationQueue.addOperation(self.tokenOperation!) + } + + private func requestAddQueue(_ url: String, + method: HTTPMethod, + parameters: Parameters?, + isLoding: Bool, + isToast: Bool, + completion: ((_ response: FANetworkManager.Response) -> Void)?) { + guard let tokenOperation = self.tokenOperation else { return } + + let requestOperation = BlockOperation { + let semaphore = DispatchSemaphore(value: 0) + self._request(url, method: method, parameters: parameters, isLoding: isLoding, isToast: isToast) { response in + semaphore.signal() + completion?(response) + } + semaphore.wait() + } + ///设置依赖关系 + requestOperation.addDependency(tokenOperation) + + operationQueue.addOperation(requestOperation) + + } + +} + +extension FANetworkManager { + + private func isTokenUrl(_ url: String) -> Bool { + return url.contains("/customer/register") + } + + private var headers: HTTPHeaders { + let token = FALogin.manager.token?.token ?? "" + let dic = [ + "authorization" : token, + "system-version" : UIDevice.current.systemVersion, + "lang-key" : "en", + "time-zone" : String.timeZone(), + "app-version" : (Bundle.main.infoDictionary!["CFBundleShortVersionString"] as? String) ?? "", + "brand" : "apple", //品牌 + "app-name" : "Fableon", + "system-type" : "ios", + "model" : UIDevice.current.machineModelName ?? "", + "idfa" : ASIdentifierManager.shared().advertisingIdentifier.uuidString, + "device-id" : FADeviceIDManager.shared.id, //设备id + "device-gaid" : UIDevice.current.identifierForVendor?.uuidString ?? "" + ] + return HTTPHeaders(dic) + } +} + + +extension FANetworkManager { + + struct Response: SmartCodable { + + var code: Int? + var data: T? + var msg: String? + + var isSuccess: Bool { + return code == 200 + } + } + + struct List: SmartCodable { + var list: [T]? + var pagination: Pagination? + + var hasNextPage: Bool { + let totalPage = pagination?.page_total ?? 0 + let currentPage = pagination?.current_page ?? 0 + return totalPage > currentPage + } + + + } + + struct Pagination: SmartCodable { + var current_page: Int? + var page_size: Int? + var page_total: Int? + var total_size: Int? + } + + +} + + diff --git a/Fableon/Base/Request/FANetworkMonitor.swift b/Fableon/Base/Request/FANetworkMonitor.swift new file mode 100644 index 0000000..885e5b7 --- /dev/null +++ b/Fableon/Base/Request/FANetworkMonitor.swift @@ -0,0 +1,73 @@ +// +// FANetworkMonitor.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/16. +// + +import UIKit +import Network + +class FANetworkMonitor { + static let manager = FANetworkMonitor() + + ///是否有网 + var isReachable: Bool? + + private var connectionType: NWInterface.InterfaceType? + private var status: NWPath.Status? + + private let monitor = NWPathMonitor() + private let queue = DispatchQueue(label: "NetworkMonitorQueue") + + func startMonitoring() { + + monitor.pathUpdateHandler = { [weak self] path in + guard let self = self else { return } + self.status = path.status + + if path.usesInterfaceType(.wifi) { + self.connectionType = .wifi + } else if path.usesInterfaceType(.cellular) { + self.connectionType = .cellular + } else if path.usesInterfaceType(.wiredEthernet) { + self.connectionType = .wiredEthernet + } else { + self.connectionType = nil + } + + + if path.status == .satisfied, self.connectionType != nil { + if self.isReachable == false { + self.isReachable = true + DispatchQueue.main.async { + NotificationCenter.default.post(name: FANetworkMonitor.networkStatusDidChangeNotification, object: nil) + } + } else { + self.isReachable = true + } + } else { + if self.isReachable == true { + self.isReachable = false + DispatchQueue.main.async { + NotificationCenter.default.post(name: FANetworkMonitor.networkStatusDidChangeNotification, object: nil) + } + } else { + self.isReachable = false + } + } + } + + + monitor.start(queue: queue) + } + + func stopMonitoring() { + monitor.cancel() + } +} + +extension FANetworkMonitor { + ///网络发生变化 + @objc static let networkStatusDidChangeNotification = NSNotification.Name(rawValue: "FANetworkMonitor.networkStatusDidChangeNotification") +} diff --git a/Fableon/Base/View/FACollectionView.swift b/Fableon/Base/View/FACollectionView.swift new file mode 100644 index 0000000..d86d0fd --- /dev/null +++ b/Fableon/Base/View/FACollectionView.swift @@ -0,0 +1,22 @@ +// +// FACollectionView.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/15. +// + +import UIKit + +class FACollectionView: UICollectionView { + + override init(frame: CGRect, collectionViewLayout layout: UICollectionViewLayout) { + super.init(frame: frame, collectionViewLayout: layout) + self.backgroundColor = .clear + self.contentInsetAdjustmentBehavior = .never + } + + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} diff --git a/Fableon/Base/View/FAImageView.swift b/Fableon/Base/View/FAImageView.swift new file mode 100644 index 0000000..3fe68e3 --- /dev/null +++ b/Fableon/Base/View/FAImageView.swift @@ -0,0 +1,101 @@ +// +// FAImageView.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/16. +// + +import UIKit +import Kingfisher + +@IBDesignable +class FAImageView: UIImageView { + + var placeholderColor = UIColor._8_B_8_B_8_B + var placeholderImage = UIImage(named: "placeholder_image") + + private lazy var placeholderImageView: UIImageView = { + let imageView = UIImageView(image: placeholderImage) + imageView.isHidden = true + imageView.contentMode = .scaleAspectFit + return imageView + }() + + override init(frame: CGRect) { + super.init(frame: frame) + _init() + } + + override init(image: UIImage?) { + super.init(image: image) + _init() + } + + override init(image: UIImage?, highlightedImage: UIImage?) { + super.init(image: image, highlightedImage: highlightedImage) + _init() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + + override func awakeFromNib() { + super.awakeFromNib() + _init() + } + + func _init() { + self.contentMode = .scaleAspectFill + self.layer.masksToBounds = true + if image == nil { + self.backgroundColor = self.placeholderColor + placeholderImageView.isHidden = false + } + addSubview(placeholderImageView) + } + + override var image: UIImage? { + didSet { + if self.backgroundColor == nil && image == nil { + self.backgroundColor = self.placeholderColor + } else if image != nil { + if self.backgroundColor == self.placeholderColor { + self.backgroundColor = nil + } + } + + if image == nil { + placeholderImageView.isHidden = false + } else { + placeholderImageView.isHidden = true + } + } + } + + override func layoutSubviews() { + super.layoutSubviews() + + placeholderImageView.frame = .init(x: 0, y: 0, width: self.bounds.width * (2 / 3), height: self.bounds.height * (2 / 3)) + placeholderImageView.center = .init(x: self.bounds.width / 2, y: self.bounds.height / 2) + } + + +} + +extension UIImageView { + func fa_setImage(_ url: String?, placeholder: UIImage? = nil, completer: ((_ image: UIImage?, _ url: URL?) -> Void)? = nil) { + + self.kf.setImage(with: URL(string: url ?? ""), placeholder: placeholder, options: nil) { result in + switch result { + case .success(let value): + completer?(value.image, value.source.url) + default : + completer?(nil, nil) + break + } + } + } +} + diff --git a/Fableon/Base/View/FAPanModalContentView.swift b/Fableon/Base/View/FAPanModalContentView.swift new file mode 100644 index 0000000..0b679d3 --- /dev/null +++ b/Fableon/Base/View/FAPanModalContentView.swift @@ -0,0 +1,78 @@ +// +// FAPanModalContentView.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/23. +// + +import UIKit +import HWPanModal + +class FAPanModalContentView: HWPanModalContentView { + + + var contentHeight = UIScreen.height * (2 / 3) + + var mainScrollView: UIScrollView? + + ///更新UI contentSize发生变化时调用 + func setNeedsLayoutUpdate() { + self.panModalSetNeedsLayoutUpdate() + } + + + override init(frame: CGRect) { + super.init(frame: frame) + + self.backgroundColor = ._000000.withAlphaComponent(0.5) + + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + //MARK: HWPanModalPresentable + override func panScrollable() -> UIScrollView? { + return mainScrollView + } + + override func longFormHeight() -> PanModalHeight { + return PanModalHeightMake(.content, contentHeight) + } + + override func showDragIndicator() -> Bool { + return false + } + + override func backgroundConfig() -> HWBackgroundConfig { + let config = HWBackgroundConfig() + config.backgroundAlpha = 0.6 + return config + } + + override func allowsTapBackgroundToDismiss() -> Bool { + return true + } + + override func allowsDragToDismiss() -> Bool { + return false + } + + override func allowsPullDownWhenShortState() -> Bool { + return false + } + + override func showsScrollableVerticalScrollIndicator() -> Bool { + return false + } + + override func springDamping() -> CGFloat { + return 1 + } + + override func cornerRadius() -> CGFloat { + return 24 + } + +} diff --git a/Fableon/Base/View/FAScrollView.swift b/Fableon/Base/View/FAScrollView.swift new file mode 100644 index 0000000..dc41a6e --- /dev/null +++ b/Fableon/Base/View/FAScrollView.swift @@ -0,0 +1,21 @@ +// +// FAScrollView.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/29. +// + +import UIKit + +class FAScrollView: UIScrollView { + + override init(frame: CGRect) { + super.init(frame: frame) + self.contentInsetAdjustmentBehavior = .never + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + +} diff --git a/Fableon/Base/View/FATableView.swift b/Fableon/Base/View/FATableView.swift new file mode 100644 index 0000000..09e3d45 --- /dev/null +++ b/Fableon/Base/View/FATableView.swift @@ -0,0 +1,49 @@ +// +// FATableView.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/29. +// + +import UIKit + +class FATableView: UITableView { + + var insetGroupedMargins: CGFloat = 15 + + override init(frame: CGRect, style: UITableView.Style) { + super.init(frame: frame, style: style) + separatorColor = .FFFFFF.withAlphaComponent(0.4) + separatorInset = .init(top: 0, left: 16, bottom: 0, right: 16) + self.backgroundColor = .clear + self.contentInsetAdjustmentBehavior = .never + + if style == .insetGrouped { + sectionFooterHeight = 14 + sectionHeaderHeight = 0.1 + } else if style == .plain { + if #available(iOS 15.0, *) { + sectionHeaderTopPadding = 0 + } + } + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override var layoutMargins: UIEdgeInsets { + set { + super.layoutMargins = newValue + } + get { + var margins = super.layoutMargins + if self.style == .insetGrouped { + margins.left = self.safeAreaInsets.left + insetGroupedMargins + margins.right = self.safeAreaInsets.right + insetGroupedMargins + } + return margins + } + } + +} diff --git a/Fableon/Base/View/FATableViewCell.swift b/Fableon/Base/View/FATableViewCell.swift new file mode 100644 index 0000000..b0afce3 --- /dev/null +++ b/Fableon/Base/View/FATableViewCell.swift @@ -0,0 +1,47 @@ +// +// FATableViewCell.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/29. +// + +import UIKit + +class FATableViewCell: UITableViewCell { + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + _init() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + + override func awakeFromNib() { + super.awakeFromNib() + } + + override func setSelected(_ selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + + // Configure the view for the selected state + } + + + private func _init() { + self.layer.rasterizationScale = UIScreen.main.scale + self.layer.shouldRasterize = true + self.selectionStyle = .none + self.backgroundColor = .clear + } +} + + +extension UITableViewCell { + + var fa_tableView: UITableView? { + return self.value(forKey: "_tableView") as? UITableView + } +} diff --git a/Fableon/Base/WebView/FAAppWebViewController.swift b/Fableon/Base/WebView/FAAppWebViewController.swift new file mode 100644 index 0000000..53698bb --- /dev/null +++ b/Fableon/Base/WebView/FAAppWebViewController.swift @@ -0,0 +1,68 @@ +// +// FAAppWebViewController.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/16. +// + +import UIKit + +class FAAppWebViewController: FABaseWebViewController { + + + var id: String? + + private var receiveDataCount = 0 + + var theme: String? = "theme_2" + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + override func fa_webViewDidFinishLoad(_ webView: FAWebView) { + super.fa_webViewDidFinishLoad(webView) + receiveDataCount = 0 + receiveDataFromNative() + } + +} + +extension FAAppWebViewController { + + func receiveDataFromNative() { + receiveDataCount += 1 + if receiveDataCount > 10 { return } + + DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { [weak self] in + guard let self = self else { return } + var dic = [ + "token" : FALogin.manager.token?.token ?? "", + "time_zone" : String.timeZone(), + "lang" : FALocalized.manager.currentLocalizedKey, + "type" : "ios", + ] + + if let theme = theme { + dic["theme"] = theme + } + + if let id = id { + dic["id"] = id + } + + if let json = dic.toJsonString() { + let js = "receiveDataFromNative(\(json))" + self.webView.evaluateJavaScript(js) { [weak self] _, error in + guard let self = self else { return } + if error != nil { + self.receiveDataFromNative() + } + } + } + } + + } +} diff --git a/Fableon/Base/WebView/FABaseWebViewController.swift b/Fableon/Base/WebView/FABaseWebViewController.swift new file mode 100644 index 0000000..ec5a3b7 --- /dev/null +++ b/Fableon/Base/WebView/FABaseWebViewController.swift @@ -0,0 +1,112 @@ +// +// FABaseWebViewController.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/16. +// + +import UIKit +import WebKit + +class FABaseWebViewController: FAViewController { + + var webUrl: String? + + ///自动设置标题 + var autoTitle = true + + var needAutoRefresh = true + + private(set) lazy var webView: FAWebView = { + let controller = WKUserContentController() + + let config = WKWebViewConfiguration() + config.userContentController = controller + config.preferences.javaScriptEnabled = true + /** 默认是不能通过JS自动打开窗口的,必须通过用户交互才能打开 */ + config.preferences.javaScriptCanOpenWindowsAutomatically = true + let webView = FAWebView(frame: self.view.bounds, configuration: config) + webView.delegate = self + return webView + }() + + override func viewDidLoad() { + super.viewDidLoad() +// self.edgesForExtendedLayout = [] + + fa_setupLayout() + + if let url = webUrl { + self.load(webUrl: url) + } + + } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + self.navigationController?.setNavigationBarHidden(false, animated: true) + self.fa_setNavigationStyle() + } + + func load(webUrl: String) { + let str: String = webUrl + + guard let url = URL(string: str) else { return } + let request = URLRequest(url: url, timeoutInterval: 30) + + self.webView.load(request) + } + + func reload() { + self.webView.reload() + } + +} + +extension FABaseWebViewController { + + private func fa_setupLayout() { + self.view.addSubview(webView) + + self.webView.snp.makeConstraints { make in + make.left.equalToSuperview().offset(0) + make.right.equalToSuperview().offset(0) + make.bottom.equalToSuperview().offset(0) + make.top.equalToSuperview().offset(UIScreen.navBarHeight) + } + } + + +} + +//MARK: -------------- VPWebViewDelegate -------------- +extension FABaseWebViewController: FAWebViewDelegate { + + func fa_webView(_ webView: FAWebView, shouldStartLoadWith navigationAction: WKNavigationAction) -> Bool { + self.webView.isHidden = false + return true + } + + func fa_webViewDidStartLoad(_ webView: FAWebView) { + FAHUD.show(containerView: self.view) + } + + func fa_webView(webView: FAWebView, didChangeTitle title: String) { + if autoTitle { + self.title = title + } + } + + func fa_webViewDidFinishLoad(_ webView: FAWebView) { + self.webView.isHidden = false + FAHUD.dismiss() + } + + func fa_webView(_ webView: FAWebView, didFailLoadWithError error: any Error) { + FAHUD.dismiss() + } + + func fa_userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) { + + } +} diff --git a/Fableon/Base/WebView/FAWebView.swift b/Fableon/Base/WebView/FAWebView.swift new file mode 100644 index 0000000..b60acde --- /dev/null +++ b/Fableon/Base/WebView/FAWebView.swift @@ -0,0 +1,147 @@ +// +// FAWebView.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/16. +// + +import UIKit +@preconcurrency import WebKit +import YYText + +@objc protocol FAWebViewDelegate: NSObjectProtocol { + + @objc optional func fa_webView(_ webView: FAWebView, shouldStartLoadWith navigationAction: WKNavigationAction) -> Bool + + @objc optional func fa_webViewDidStartLoad(_ webView: FAWebView) + + @objc optional func fa_webViewDidFinishLoad(_ webView: FAWebView) + + @objc optional func fa_webView(_ webView: FAWebView, didFailLoadWithError error: Error) + + ///进度 + @objc optional func fa_webView(webView: FAWebView, didChangeProgress progress: CGFloat) + ///标题 + @objc optional func fa_webView(webView: FAWebView, didChangeTitle title: String) + + ///web交互用 + @objc optional func fa_userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) + +} + +class FAWebView: WKWebView { + + weak var delegate: FAWebViewDelegate? + + private(set) var scriptMessageHandlerArray: [String] = [ + ] + + + deinit { + self.removeObserver(self, forKeyPath: "estimatedProgress") + self.removeObserver(self, forKeyPath: "title") + + } + + override init(frame: CGRect, configuration: WKWebViewConfiguration) { + super.init(frame: frame, configuration: configuration) + addScriptMessageHandler() + _setupInit() + } + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + private func _setupInit() { + + self.isOpaque = false + self.navigationDelegate = self + self.addObserver(self, forKeyPath: "estimatedProgress", options: .new, context: nil) + self.addObserver(self, forKeyPath: "title", options: .new, context: nil) + + } + + override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { + if object as? FAWebView == self { + if keyPath == "estimatedProgress", let progress = change?[NSKeyValueChangeKey.newKey] as? CGFloat { + self.delegate?.fa_webView?(webView: self, didChangeProgress: progress) + } else if keyPath == "title", let title = change?[NSKeyValueChangeKey.newKey] as? String { + self.delegate?.fa_webView?(webView: self, didChangeTitle: title) + } + } + } + + func load(urlStr: String) { + guard let url = URL(string: urlStr) else { return } + let request = URLRequest(url: url, cachePolicy: .returnCacheDataElseLoad, timeoutInterval: 30) + self.load(request) + } + + func removeScriptMessageHandler() { + self.scriptMessageHandlerArray.forEach{ + configuration.userContentController.removeScriptMessageHandler(forName: $0) + } + } + func addScriptMessageHandler() { + self.scriptMessageHandlerArray.forEach{ + configuration.userContentController.add(YYTextWeakProxy(target: self) as! WKScriptMessageHandler, name: $0) + } + } +} + +//MARK:-------------- WKNavigationDelegate -------------- +extension FAWebView: WKNavigationDelegate { + + func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) { + + decisionHandler(.allow); + } + + func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { + + if let url = navigationAction.request.url, + url.scheme != "http", + url.scheme != "https" + { + UIApplication.shared.open(url) + decisionHandler(.cancel) + return + } + + if let result = self.delegate?.fa_webView?(self, shouldStartLoadWith: navigationAction) { + if result { + decisionHandler(.allow) + } else { + decisionHandler(.cancel) + } + } else { + decisionHandler(.allow) + } + } + + func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) { + self.delegate?.fa_webViewDidStartLoad?(self) + } + + func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { + self.delegate?.fa_webViewDidFinishLoad?(self) + } + + func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) { + self.delegate?.fa_webView?(self, didFailLoadWithError: error) + } + + func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) { + self.delegate?.fa_webView?(self, didFailLoadWithError: error) + } + + +} + +//MARK:-------------- WKScriptMessageHandler -------------- +extension FAWebView: WKScriptMessageHandler { + + func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) { + self.delegate?.fa_userContentController?(userContentController, didReceive: message) + } + +} diff --git a/Fableon/Class/Home/C/FAHomeViewController.swift b/Fableon/Class/Home/C/FAHomeViewController.swift new file mode 100644 index 0000000..b93db5c --- /dev/null +++ b/Fableon/Class/Home/C/FAHomeViewController.swift @@ -0,0 +1,247 @@ +// +// FAHomeViewController.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/15. +// + +import UIKit +import SwiftUI +import SnapKit + +class FAHomeViewController: FAViewController { + + private var viewModel = FAHomeViewModel() + + + + + private lazy var cvLayout: FAWaterfallFlowLayout = { + let layout = FAWaterfallFlowLayout() + layout.delegate = self + return layout + }() + + private lazy var collectionView: FACollectionView = { + let view = FACollectionView(frame: .zero, collectionViewLayout: cvLayout) + view.delegate = self + view.dataSource = self + view.contentInset = .init(top: 20, left: 0, bottom: 10, right: 0) + view.register(FAHomeBannerContentCell.self, forCellWithReuseIdentifier: "FAHomeBannerCell") + view.register(FAHomeMustSeeContentCell.self, forCellWithReuseIdentifier: "FAHomeMustSeeContentCell") + view.register(FAHomeNewContentCell.self, forCellWithReuseIdentifier: "FAHomeNewContentCell") + view.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "cell") + + view.register(UINib(nibName: "FAHomeRecommendedCell", bundle: nil), forCellWithReuseIdentifier: "FAHomeRecommendedCell") + view.register(UINib(nibName: "FAHomeSectionTitleView", bundle: nil), forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: "FAHomeSectionTitleView") + view.register(UICollectionReusableView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionFooter, withReuseIdentifier: "footer") + view.fa_addRefreshHeader(insetTop: view.contentInset.top) { [weak self] in + self?.handleHeaderRefresh(nil) + } + return view + }() + + private lazy var titleView: UIView = { + let view = UIImageView(image: UIImage(named: "Thalire")) + return view + }() + + private lazy var searchButton: UIButton = { + let button = UIButton(type: .custom, primaryAction: UIAction(handler: { [weak self] _ in + guard let self = self else { return } + let vc = FASearchViewController() + self.navigationController?.pushViewController(vc, animated: true) + })) + button.setImage(UIImage(named: "首页搜索i_ic"), for: .normal) + return button + }() + + deinit { + NotificationCenter.default.removeObserver(self) + } + + override func viewDidLoad() { + super.viewDidLoad() + NotificationCenter.default.addObserver(self, selector: #selector(networkStatusDidChangeNotification), name: FANetworkMonitor.networkStatusDidChangeNotification, object: nil) + fa_setupLayout() + + self.viewModel.requestHomeData { [weak self] in + self?.collectionView.reloadData() + } + } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + self.navigationController?.setNavigationBarHidden(true, animated: true) + } + + override func handleHeaderRefresh(_ completer: (() -> Void)?) { + self.viewModel.requestHomeData { [weak self] in + self?.collectionView.reloadData() + self?.collectionView.fa_endHeaderRefreshing() + } + } + + @objc private func networkStatusDidChangeNotification() { + if self.viewModel.dataArr.isEmpty, FANetworkMonitor.manager.isReachable == true { + self.viewModel.requestHomeData { [weak self] in + self?.collectionView.reloadData() + } + } + } +} + +extension FAHomeViewController { + + private func fa_setupLayout() { + view.addSubview(titleView) + view.addSubview(searchButton) + view.addSubview(collectionView) + + titleView.snp.makeConstraints { make in + make.left.equalToSuperview().offset(16) + make.centerY.equalTo(self.view.snp.top).offset(UIScreen.safeTop + (UIScreen.navBarHeight - UIScreen.safeTop) / 2) + } + + searchButton.snp.makeConstraints { make in + make.centerY.equalTo(titleView) + make.right.equalToSuperview().offset(-16) + } + + collectionView.snp.makeConstraints { make in + make.left.right.bottom.equalToSuperview() + make.top.equalToSuperview().offset(UIScreen.navBarHeight) + } + } + +} + + +//MARK: UICollectionViewDelegate UICollectionViewDataSource +extension FAHomeViewController: UICollectionViewDelegate, UICollectionViewDataSource { + + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let item = self.viewModel.dataArr[indexPath.section] + + if item.type == .banner { + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "FAHomeBannerCell", for: indexPath) as! FAHomeBannerContentCell + cell.moduleItem = item.data as? FAHomeModuleItem + cell.viewModel = self.viewModel + return cell + + } else if item.type == .mustSee { + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "FAHomeMustSeeContentCell", for: indexPath) as! FAHomeMustSeeContentCell + cell.configure(self.viewModel) + return cell + + } else if item.type == .new { + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "FAHomeNewContentCell", for: indexPath) as! FAHomeNewContentCell + cell.configure(viewModel) + return cell + } + + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "FAHomeRecommendedCell", for: indexPath) as! FAHomeRecommendedCell + + cell.model = (item.data as? FAHomeModuleItem)?.list[indexPath.row] + + return cell + } + + func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView { + if kind == UICollectionView.elementKindSectionHeader { + let view = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "FAHomeSectionTitleView", for: indexPath) + return view + } + return collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "footer", for: indexPath) + } + + func numberOfSections(in collectionView: UICollectionView) -> Int { + return self.viewModel.dataArr.count + } + + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + let item = self.viewModel.dataArr[section] + if item.type == .recommended { + return (item.data as? FAHomeModuleItem)?.list.count ?? 0 + } + return 1 + } + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + let item = self.viewModel.dataArr[indexPath.section] + guard item.type == .recommended else { return } + let model = (item.data as? FAHomeModuleItem)?.list[indexPath.row] + self.viewModel.pushPlayerDetail(model) + } +} + +//MARK: FAWaterfallMutiSectionDelegate +extension FAHomeViewController: FAWaterfallMutiSectionDelegate { + + func heightForRowAtIndexPath(collectionView collection: UICollectionView, layout: FAWaterfallFlowLayout, indexPath: IndexPath, itemWidth: CGFloat) -> CGFloat { + let homeItem = self.viewModel.dataArr[indexPath.section] + if homeItem.type == .recommended, let model = (homeItem.data as? FAHomeModuleItem)?.list[indexPath.row] { + if model.cellHeight > 0 { + return model.cellHeight + } else { + let size = CGSize.init(width: floor((UIScreen.width - 32 - 13) / 2) - 24, height: 1000) + + let height = 219 + 6 + 12 + (model.name?.size(.font(ofSize: 14, weight: .medium), size).height ?? 0) + + model.cellHeight = height + return height + } + } + return homeItem.cellHeight + } + + func columnNumber(collectionView collection: UICollectionView, layout: FAWaterfallFlowLayout, section: Int) -> Int { + let homeItem = self.viewModel.dataArr[section] + if homeItem.type == .recommended { + return 2 + } + return 1 + } + + func referenceSizeForHeader(collectionView collection: UICollectionView, layout: FAWaterfallFlowLayout, section: Int) -> CGSize { + let item = self.viewModel.dataArr[section] + guard item.type == .recommended else { return .zero } + return .init(width: UIScreen.width, height: 40) + } + + func spacingWithLastSection(collectionView collection: UICollectionView, layout: FAWaterfallFlowLayout, section: Int) -> CGFloat { + if section == 0 { + return 0 + } + return 25 + } + + func insetForSection(collectionView collection: UICollectionView, layout: FAWaterfallFlowLayout, section: Int) -> UIEdgeInsets { + let homeItem = self.viewModel.dataArr[section] + if homeItem.type == .recommended { + return .init(top: 0, left: 16, bottom: 0, right: 16) + } else { + return .zero + } + } + + func lineSpacing(collectionView collection: UICollectionView, layout: FAWaterfallFlowLayout, section: Int) -> CGFloat { + let homeItem = self.viewModel.dataArr[section] + if homeItem.type == .recommended { + return 12 + } else { + return 0 + } + } + + func interitemSpacing(collectionView collection: UICollectionView, layout: FAWaterfallFlowLayout, section: Int) -> CGFloat { + let homeItem = self.viewModel.dataArr[section] + if homeItem.type == .recommended { + return 13 + } else { + return 0 + } + } + +} diff --git a/Fableon/Class/Home/C/FASearchViewController.swift b/Fableon/Class/Home/C/FASearchViewController.swift new file mode 100644 index 0000000..60dc983 --- /dev/null +++ b/Fableon/Class/Home/C/FASearchViewController.swift @@ -0,0 +1,113 @@ +// +// FASearchViewController.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/14. +// + +import UIKit + +class FASearchViewController: FAViewController { + + + private lazy var viewModel: FASearchViewModel = FASearchViewModel() + + private lazy var returnButton: UIButton = { + let button = UIButton(type: .custom) + button.setImage(UIImage(named: "Frame 3011"), for: .normal) + button.addAction(UIAction(handler: { [weak self] _ in + self?.handleNavigationBack() + }), for: .touchUpInside) + return button + }() + + private lazy var textView: FASearchInputView = { + let view = FASearchInputView() + view.didSearch = { [weak self] text in + guard let self = self else { return } + self.search(text) + } + return view + }() + + private lazy var homeView: FASearchHomeView = { + let view = FASearchHomeView() + view.viewModel = viewModel + view.didSearch = { [weak self] text in + self?.textView.text = text + self?.search(text) + } + return view + }() + + private lazy var resultView: FASearchResultView = { + let view = FASearchResultView() + view.viewModel = viewModel + return view + }() + + override func viewDidLoad() { + super.viewDidLoad() + textView.becomeFirstResponder() + +// homeView.isHidden = true + resultView.isHidden = true + + fa_setupLayout() + + self.viewModel.requestSearchRecommendData(completer: nil) + } + + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + self.navigationController?.setNavigationBarHidden(true, animated: true) + } + + private func search(_ text: String) { + if text.isEmpty { + homeView.isHidden = false + resultView.isHidden = true + } else { + homeView.isHidden = true + resultView.isHidden = false + } + + resultView.search(text) + self.viewModel.addSearchRecord(text: text) + } + +} + +extension FASearchViewController { + + private func fa_setupLayout() { + view.addSubview(returnButton) + view.addSubview(textView) + view.addSubview(homeView) + view.addSubview(resultView) + + returnButton.snp.makeConstraints { make in + make.left.equalToSuperview().offset(16) + make.top.equalToSuperview().offset(UIScreen.safeTop) + make.height.equalTo(44) + } + + textView.snp.makeConstraints { make in + make.left.equalTo(returnButton.snp.right).offset(10) + make.centerY.equalTo(returnButton) + make.right.equalToSuperview().offset(-16) + } + + homeView.snp.makeConstraints { make in + make.left.right.bottom.equalToSuperview() + make.top.equalTo(returnButton.snp.bottom) + } + + resultView.snp.makeConstraints { make in + make.edges.equalTo(homeView) + } + + } + +} diff --git a/Fableon/Class/Home/M/FAHomeItem.swift b/Fableon/Class/Home/M/FAHomeItem.swift new file mode 100644 index 0000000..88c4100 --- /dev/null +++ b/Fableon/Class/Home/M/FAHomeItem.swift @@ -0,0 +1,23 @@ +// +// FAHomeItem.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/16. +// + +import UIKit + +class FAHomeItem: NSObject, Identifiable { + enum ItemType { + case banner + case mustSee + case new + case recommended + } + + var type: ItemType? + //FAHomeModuleItem [FAHomeModuleItem] + var data: Any? + + var cellHeight: CGFloat = 0 +} diff --git a/Fableon/Class/Home/M/FAHomeModuleItem.swift b/Fableon/Class/Home/M/FAHomeModuleItem.swift new file mode 100644 index 0000000..af01638 --- /dev/null +++ b/Fableon/Class/Home/M/FAHomeModuleItem.swift @@ -0,0 +1,53 @@ +// +// FAHomeModuleItem.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/15. +// + +import UIKit +import SmartCodable + +class FAHomeModuleItem: NSObject, Identifiable, SmartCodable { + required override init() { } + + enum ModuleKey: String, SmartCaseDefaultable { + case banner = "home_banner" + case v3_recommand = "home_v3_recommand" + case new_recommand = "new_recommand" + ///分类推荐 + case cagetory_recommand = "home_cagetory_recommand" + case week_ranking = "week_ranking" + case week_recommend = "week_highest_recommend" + } + + + var module_key: ModuleKey? + var title: String? + var list: [FAShortPlayModel] = [] + + @SmartAny + var data: Any? + + + func didFinishMapping() { + if let data = data as? [[String : Any]] { + self.list = [FAShortPlayModel].deserialize(from: data) ?? [] + } else if let data = data as? [String : Any] { + var dataList: [[String : Any]]? + if let list = data["list"] as? [[String : Any]] { + self.title = data["title"] as? String + dataList = list + + } else if let list = data["shortPlayList"] as? [[String : Any]] { + self.title = data["category_name"] as? String + dataList = list + } + + if let dataList = dataList { + self.list = [FAShortPlayModel].deserialize(from: dataList) ?? [] + } + } + } + +} diff --git a/Fableon/Class/Home/UI/FAHomeMustSeeContentView.swift b/Fableon/Class/Home/UI/FAHomeMustSeeContentView.swift new file mode 100644 index 0000000..702254d --- /dev/null +++ b/Fableon/Class/Home/UI/FAHomeMustSeeContentView.swift @@ -0,0 +1,43 @@ +// +// FAHomeMustSeeContentView.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/8/27. +// + +import SwiftUI + +struct FAHomeMustSeeContentView: View { + + @Binding var list: [FAShortPlayModel] + + @ObservedObject var viewModel: FAHomeViewModel + + + var body: some View { + VStack(spacing: 15) { + HStack { + Text("Editor's Picks".localized) + .font(Font.font(size: 16, weight: .medium)) + .foregroundStyle(Color(String.color_FFFFFF)) + .padding(.leading, 10) + .padding(.top, 12) + Spacer() + } + + VStack(spacing: 11) { + ForEach(list.indices, id: \.self) { index in + if index < 2 { + FAHomeMustSeeShortView(model: $list[index], viewModel: viewModel) + } + } + } + .padding(.horizontal, 10) + Spacer(minLength: 0) + } + .frame(height: 310) + .background(Color(String.color_FFFFFF).opacity(0.2)) + .cornerRadius(11) + + } +} diff --git a/Fableon/Class/Home/UI/FAHomeMustSeeShortView.swift b/Fableon/Class/Home/UI/FAHomeMustSeeShortView.swift new file mode 100644 index 0000000..d9fd114 --- /dev/null +++ b/Fableon/Class/Home/UI/FAHomeMustSeeShortView.swift @@ -0,0 +1,80 @@ +// +// FAHomeMustSeeShortView.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/8/27. +// + +import SwiftUI +import Kingfisher + + +struct FAHomeMustSeeShortView: View { + + @Binding var model: FAShortPlayModel + @ObservedObject var viewModel: FAHomeViewModel + + var body: some View { + + ZStack() { + setupUI() + .onTapGesture { + self.viewModel.pushPlayerDetail(model) + } + } + } + + + + private func setupUI() -> some View { + HStack() { + KFImage(URL(string: model.image_url ?? "")) + .resizable() + .scaledToFill() + .cornerRadius(5) + .clipped() + .frame(width: 76, height: 102) + .padding(.leading, 9) + + VStack(alignment: .leading) { + Text(model.name ?? "") + .font(Font.font(size: 14, weight: .medium)) + .foregroundStyle(Color(String.color_000000)) + .lineLimit(2) + + Spacer() + + HStack(spacing: 4) { + Image("Frame 2920") + + Text("Watch".localized) + .font(Font.font(size: 12, weight: .medium)) + .foregroundStyle(Color(String.color_000000)) + + } + .padding(.trailing, 3) + .frame(maxWidth: .infinity) + .frame(height: 18) + .background(content: { + LinearGradient(colors: [Color(String.color_BEDFFF), Color(String.color_52A2F1)], startPoint: .leading, endPoint: .trailing) + }) + .cornerRadius(9) + + } + .frame(maxWidth: .infinity) + .padding(.trailing, 9) + .padding(.top, 9) + .padding(.bottom, 9) + + } + .frame(height: 120) + .frame(maxWidth: .infinity) + .background(Color(String.color_DDEDFD).opacity(0.4)) + .cornerRadius(7) + .overlay { + RoundedRectangle(cornerRadius: 7) + .stroke(Color(String.color_A8DBFF), lineWidth: 1) + } + } +} + diff --git a/Fableon/Class/Home/UI/FAHomeMustSeeView.swift b/Fableon/Class/Home/UI/FAHomeMustSeeView.swift new file mode 100644 index 0000000..80d6a34 --- /dev/null +++ b/Fableon/Class/Home/UI/FAHomeMustSeeView.swift @@ -0,0 +1,96 @@ +// +// FAHomeMustSeeView.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/8/27. +// + +import SwiftUI + +struct FAHomeMustSeeView: View { + + + @State var selected = 0 +// @Binding var selected: Binding = projectedValue + + @ObservedObject var viewModel: FAHomeViewModel + + var body: some View { + VStack { + HStack { + Text("Must-see TV series".localized) + .font(Font.font(size: 18, weight: .medium)) + .foregroundStyle(Color(String.color_FFFFFF)) + .padding(.leading, 16) + Spacer() + } + Spacer(minLength: 12) + + HStack { + menuView() + + Spacer(minLength: 11) + + contentView(index: selected) + } + } + } + + private func menuView() -> some View { + let list = viewModel.mustSeeArr + + return VStack(spacing: 1) { + ForEach(list.indices, id: \.self) { index in + menuItemView(item: list[index], index: index) + } + } + .padding(.leading, 13) + } + + private func menuItemView(item: FAHomeModuleItem, index: Int) -> some View { + let isSelected = index == selected + let textColor = isSelected ? Color(String.color_FFFFFF) : Color(String.color_FFFFFF).opacity(0.8) + + return VStack { + HStack { + Text(item.title ?? "") + .font(Font.font(size: 16, weight: .black)) + .foregroundStyle(textColor) + .padding(.leading, 8) + Spacer() + } + + HStack { + Text("selection".localized) + .font(Font.font(size: 12, weight: .medium)) + .foregroundStyle(textColor) + .padding(.leading, 8) + Spacer() + } + + HStack { + Image(isSelected ? "Frame 2914" : "Frame 2916") + .padding(.leading, 8) + Spacer() + } + } + .frame(width: 105, height: 72) + .background(Color(String.color_FFFFFF).opacity(0.2)) + .cornerRadius(8) + .frame(width: 111, height: 78) + .gradientBorder(colors: isSelected ? [Color(String.color_81CAFF), Color(String.color_20A2FF)] : [Color.clear, Color.clear], lineWidth: 6, cornerRadius: 11, startPoint: .topTrailing, endPoint: .bottomLeading) + + .onTapGesture { + self.selected = index + } + } + + private func contentView(index: Int) -> some View { + return FAHomeMustSeeContentView(list: $viewModel.mustSeeArr[index].list, viewModel: self.viewModel) + .padding(.trailing, 16) + } +} + +//#Preview { +// FAHomeMustSeeView() +//} diff --git a/Fableon/Class/Home/UI/FAHomeNewView.swift b/Fableon/Class/Home/UI/FAHomeNewView.swift new file mode 100644 index 0000000..155feb5 --- /dev/null +++ b/Fableon/Class/Home/UI/FAHomeNewView.swift @@ -0,0 +1,87 @@ +// +// FAHomeNewView.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/8/27. +// + +import SwiftUI +import Kingfisher +import FSPagerView + +struct FAHomeNewView: View { + + @ObservedObject var viewModel: FAHomeViewModel + + @State private var transformer: FSPagerViewTransformer = { + let transformer = FSPagerViewTransformer(type: .overlap) + transformer.minimumScale = 0.9 + transformer.minimumAlpha = 1 + return transformer + }() + + var body: some View { + let list = viewModel.homeNewItem?.list ?? [] + + VStack(spacing: 15) { + Text("New Releases".localized) + .font(.font(size: 18, weight: .medium)) + .foregroundStyle(Color(String.color_FFFFFF)) + .padding(.leading, 16) + .frame(maxWidth: .infinity, alignment: .leading) + + FSPagerSwiftUIView(list) { model in + pageContentView(model) + } + .transformer( + transformer + ) + .isLoop(true) + .itemSize(.init(width: 235, height: 235)) + .frame(height: 235) + + } + + } + + + func pageContentView(_ model: FAShortPlayModel) -> some View { + + ZStack { + GeometryReader { proxy in + KFImage(URL(string: model.image_url ?? "")) + .resizable() + .scaledToFill() + .frame(width: proxy.size.width, height: proxy.size.height) + } + VStack { + Spacer() + + HStack(spacing: 4) { + Image("Frame 2921") + + Text("Watch".localized) + .font(.font(size: 14, weight: .medium)) + .foregroundStyle(Color(String.color_000000)) + } + .frame(height: 30) + .frame(maxWidth: .infinity) + .background { + LinearGradient(colors: [Color(String.color_C7DEF5), Color(String.color_52A2F1)], startPoint: .leading, endPoint: .trailing) + } + .clipShape(RoundedRectangle(cornerRadius: 15)) + } + .padding(.trailing, 17) + .padding(.leading, 17) + .padding(.bottom, 15) + .frame(maxWidth: .infinity) + + } + .frame(maxWidth: .infinity, maxHeight: .infinity) + .clipShape(RoundedRectangle(cornerRadius: 12)) + .onTapGesture { + self.viewModel.pushPlayerDetail(model) + } + } + +} diff --git a/Fableon/Class/Home/UI/FAHomeRecommendedItemView.swift b/Fableon/Class/Home/UI/FAHomeRecommendedItemView.swift new file mode 100644 index 0000000..e3bee21 --- /dev/null +++ b/Fableon/Class/Home/UI/FAHomeRecommendedItemView.swift @@ -0,0 +1,54 @@ +// +// FAHomeRecommendedItemView.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/8/28. +// + +import SwiftUI +import Kingfisher + +struct FAHomeRecommendedItemView: View { + + @Binding var model: FAShortPlayModel + + var body: some View { + VStack(alignment: .leading, spacing: 0) { + ZStack(alignment: .topTrailing) { + GeometryReader { proxy in + KFImage(URL(string: model.image_url ?? "")) + .resizable() + .scaledToFill() + .frame(width: proxy.size.width, height: proxy.size.height) + .clipped() + } + + if let str = model.category?.first { + ZStack { + Text(str) + .font(.font(size: 12, weight: .medium)) + .foregroundStyle(Color(String.color_FFFFFF)) + .frame(height: 24) + .padding(.horizontal, 12) + .background(Color(String.color_000000).opacity(0.75)) + .clipShape(RoundedRectangle(cornerRadius: 12)) + } + .padding(.trailing, 6) + .padding(.top, 6) + } + + } + .frame(maxWidth: .infinity) + .frame(height: 219) + + Text(model.name ?? "") + .font(.font(size: 14, weight: .medium)) + .foregroundStyle(Color(String.color_FFFFFF)) + .padding(.init(top: 6, leading: 12, bottom: 12, trailing: 12)) + + } + .background(Color(String.color_333333)) + .clipShape(RoundedRectangle(cornerRadius: 8)) + + } +} diff --git a/Fableon/Class/Home/V/FAHomeBannerCell.swift b/Fableon/Class/Home/V/FAHomeBannerCell.swift new file mode 100644 index 0000000..2c539ff --- /dev/null +++ b/Fableon/Class/Home/V/FAHomeBannerCell.swift @@ -0,0 +1,54 @@ +// +// FAHomeBannerCell.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/16. +// + +import UIKit +import FSPagerView + +class FAHomeBannerCell: FSPagerViewCell { + + var model: FAShortPlayModel? { + didSet { + coverImageView.fa_setImage(model?.horizontally_img) + } + } + + + + private lazy var coverImageView: FAImageView = { + let imageView = FAImageView() + imageView.layer.cornerRadius = 12 + return imageView + }() + + override init(frame: CGRect) { + super.init(frame: frame) + + self.contentView.layer.shadowColor = UIColor.white.cgColor + self.contentView.layer.shadowRadius = 5 + self.contentView.layer.shadowOpacity = 0.75 + self.contentView.layer.shadowOffset = .init(width: 0, height: 1) + + fa_setupLayout() + } + + @MainActor required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + +} + +extension FAHomeBannerCell { + + private func fa_setupLayout() { + contentView.addSubview(coverImageView) + + coverImageView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + } + +} diff --git a/Fableon/Class/Home/V/FAHomeBannerContentCell.swift b/Fableon/Class/Home/V/FAHomeBannerContentCell.swift new file mode 100644 index 0000000..bf51c52 --- /dev/null +++ b/Fableon/Class/Home/V/FAHomeBannerContentCell.swift @@ -0,0 +1,89 @@ +// +// FAHomeBannerCell.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/16. +// + +import UIKit +import SwiftUI +import FSPagerView + +class FAHomeBannerContentCell: UICollectionViewCell { + + var moduleItem: FAHomeModuleItem? { + didSet { + pagerView.reloadData() + } + } + + weak var viewModel: FAHomeViewModel? + + private lazy var pagerView: FSPagerView = { + let transformer = FAPagerViewTransformer(type: .linear) + transformer.minimumAlpha = 1 + transformer.minimumScale = 0.9 + + + let view = FSPagerView() + view.itemSize = .init(width: 282, height: 146) + view.transformer = transformer + view.delegate = self + view.dataSource = self + view.isInfinite = true + view.interitemSpacing = 1 + view.register(FAHomeBannerCell.self, forCellWithReuseIdentifier: "cell") + return view + }() + + + override init(frame: CGRect) { + super.init(frame: frame) + + let subviews = pagerView.subviews.first?.subviews + subviews?.forEach { + if let view = $0 as? UICollectionView{ + view.layer.masksToBounds = false + } + } + + fa_setupLayout() + + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + +} + +extension FAHomeBannerContentCell { + private func fa_setupLayout() { + contentView.addSubview(pagerView) + + pagerView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + } + +} + +//MARK: FSPagerViewDelegate FSPagerViewDataSource +extension FAHomeBannerContentCell: FSPagerViewDelegate, FSPagerViewDataSource { + func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewCell { + let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "cell", at: index) as! FAHomeBannerCell + cell.model = moduleItem?.list[index] + return cell + } + + func numberOfItems(in pagerView: FSPagerView) -> Int { + return moduleItem?.list.count ?? 0 + } + + func pagerView(_ pagerView: FSPagerView, didSelectItemAt index: Int) { + let model = moduleItem?.list[index] + self.viewModel?.pushPlayerDetail(model) + } + + +} diff --git a/Fableon/Class/Home/V/FAHomeMustSeeContentCell.swift b/Fableon/Class/Home/V/FAHomeMustSeeContentCell.swift new file mode 100644 index 0000000..fe12231 --- /dev/null +++ b/Fableon/Class/Home/V/FAHomeMustSeeContentCell.swift @@ -0,0 +1,48 @@ +// +// FAHomeMustSeeContentCell.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/16. +// + +import UIKit +import SwiftUI + +class FAHomeMustSeeContentCell: UICollectionViewCell { + + + private var hostingVC: UIHostingController? + + override init(frame: CGRect) { + super.init(frame: frame) + + + } + + + func configure(_ viewModel: FAHomeViewModel) { +// self.contentConfiguration = UIHostingConfiguration(content: { +// FAHomeMustSeeView(viewModel: viewModel) +// }) +// .margins(.all, 0) + + let uiView = FAHomeMustSeeView(viewModel: viewModel) + if let hostingVC = hostingVC { + hostingVC.rootView = uiView + } else { + let hostingVC = UIHostingController(rootView: uiView) + hostingVC.view.backgroundColor = .clear + contentView.addSubview(hostingVC.view) + hostingVC.view.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + self.hostingVC = hostingVC + } + + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + +} diff --git a/Fableon/Class/Home/V/FAHomeNewContentCell.swift b/Fableon/Class/Home/V/FAHomeNewContentCell.swift new file mode 100644 index 0000000..975d9f5 --- /dev/null +++ b/Fableon/Class/Home/V/FAHomeNewContentCell.swift @@ -0,0 +1,35 @@ +// +// FAHomeNewContentCell.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/16. +// + +import UIKit +import SwiftUI + +class FAHomeNewContentCell: UICollectionViewCell { + + private var hostingVC: UIHostingController? + + func configure(_ viewModel: FAHomeViewModel) { +// self.contentConfiguration = UIHostingConfiguration(content: { +// FAHomeNewView(viewModel: viewModel) +// }) +// .margins(.all, 0) + + let uiView = FAHomeNewView(viewModel: viewModel) + if let hostingVC = hostingVC { + hostingVC.rootView = uiView + } else { + let hostingVC = UIHostingController(rootView: uiView) + hostingVC.view.backgroundColor = .clear + contentView.addSubview(hostingVC.view) + hostingVC.view.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + self.hostingVC = hostingVC + } + } +} diff --git a/Fableon/Class/Home/V/FAHomeRecommendedCell.swift b/Fableon/Class/Home/V/FAHomeRecommendedCell.swift new file mode 100644 index 0000000..0e9fcd5 --- /dev/null +++ b/Fableon/Class/Home/V/FAHomeRecommendedCell.swift @@ -0,0 +1,42 @@ +// +// FAHomeRecommendedCell.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/16. +// + +import UIKit + +class FAHomeRecommendedCell: UICollectionViewCell { + + var model: FAShortPlayModel? { + didSet { + coverImageView.fa_setImage(model?.image_url) + + titleLabel.text = model?.name + + if let text = model?.category?.first, !text.isEmpty { + markView.isHidden = false + markLabel.text = text + } else { + markView.isHidden = true + } + } + } + + @IBOutlet weak var coverImageView: FAImageView! + + @IBOutlet weak var titleLabel: UILabel! + + @IBOutlet weak var markView: UIView! + + @IBOutlet weak var markLabel: UILabel! + + override func awakeFromNib() { + super.awakeFromNib() + + self.layer.cornerRadius = 8 + self.layer.masksToBounds = true + } + +} diff --git a/Fableon/Class/Home/V/FAHomeRecommendedCell.xib b/Fableon/Class/Home/V/FAHomeRecommendedCell.xib new file mode 100644 index 0000000..157f658 --- /dev/null +++ b/Fableon/Class/Home/V/FAHomeRecommendedCell.xib @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Fableon/Class/Home/V/FAHomeSectionTitleView.swift b/Fableon/Class/Home/V/FAHomeSectionTitleView.swift new file mode 100644 index 0000000..fb8a689 --- /dev/null +++ b/Fableon/Class/Home/V/FAHomeSectionTitleView.swift @@ -0,0 +1,17 @@ +// +// FAHomeSectionTitleView.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/16. +// + +import UIKit + +class FAHomeSectionTitleView: UICollectionReusableView { + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + +} diff --git a/Fableon/Class/Home/V/FAHomeSectionTitleView.xib b/Fableon/Class/Home/V/FAHomeSectionTitleView.xib new file mode 100644 index 0000000..50796c9 --- /dev/null +++ b/Fableon/Class/Home/V/FAHomeSectionTitleView.xib @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Fableon/Class/Home/V/FASearchHomeView.swift b/Fableon/Class/Home/V/FASearchHomeView.swift new file mode 100644 index 0000000..2d116d4 --- /dev/null +++ b/Fableon/Class/Home/V/FASearchHomeView.swift @@ -0,0 +1,95 @@ +// +// FASearchHomeView.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/14. +// + +import UIKit + +class FASearchHomeView: UIView { + + weak var viewModel: FASearchViewModel? { + didSet { + viewModel?.addObserver(self, forKeyPath: "recommendData", context: nil) + viewModel?.addObserver(self, forKeyPath: "recordList", context: nil) + + self.recommendView.dataArr = self.viewModel?.recommendData ?? [] + self.recordView.dataArr = self.viewModel?.recordList ?? [] + updateLayout() + } + } + + var didSearch: ((_ text: String) -> Void)? + + private lazy var stackView: UIStackView = { + let view = UIStackView() + view.spacing = 20 + view.axis = .vertical + return view + }() + + private lazy var recordView: FASearchRecordView = { + let view = FASearchRecordView() + view.didSearch = { [weak self] text in + self?.didSearch?(text) + } + view.didDelete = { [weak self] in + self?.viewModel?.clearSearchRecord() + } + return view + }() + + private lazy var recommendView: FASearchRecommendView = { + let view = FASearchRecommendView() + return view + }() + + override init(frame: CGRect) { + super.init(frame: frame) + updateLayout() + + fa_setupLayout() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { + if keyPath == "recommendData" { + self.recommendView.dataArr = self.viewModel?.recommendData ?? [] + } else if keyPath == "recordList" { + self.recordView.dataArr = self.viewModel?.recordList ?? [] + } + updateLayout() + } + + func updateLayout() { + stackView.fa_removeAllArrangedSubview() + + if self.recordView.dataArr.count > 0 { + stackView.addArrangedSubview(recordView) + } + if self.recommendView.dataArr.count > 0 { + stackView.addArrangedSubview(self.recommendView) + } + + } + +} + +extension FASearchHomeView { + + private func fa_setupLayout() { + addSubview(stackView) + + stackView.snp.makeConstraints { make in + make.left.right.equalToSuperview() + make.top.equalToSuperview().offset(20) + make.bottom.lessThanOrEqualToSuperview() +// make.bottom.equalToSuperview() + } + } + +} diff --git a/Fableon/Class/Home/V/FASearchInputView.swift b/Fableon/Class/Home/V/FASearchInputView.swift new file mode 100644 index 0000000..6be5e09 --- /dev/null +++ b/Fableon/Class/Home/V/FASearchInputView.swift @@ -0,0 +1,108 @@ +// +// FASearchInputView.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/14. +// + +import UIKit + +class FASearchInputView: UIView { + + override var intrinsicContentSize: CGSize { + return .init(width: UIScreen.width, height: 32) + } + + + + var didSearch: ((_ text: String) -> Void)? + + var text: String? { + get { + return textField.text + } + set { + textField.text = newValue + } + } + + private lazy var iconImageView: UIImageView = { + let imageView = UIImageView(image: UIImage(named: "Search")) + imageView.setContentHuggingPriority(.required, for: .horizontal) + imageView.setContentCompressionResistancePriority(.required, for: .horizontal) + return imageView + }() + + private lazy var textField: UITextField = { + let textField = UITextField(frame: .zero) + textField.tintColor = UIColor.FFFFFF + textField.delegate = self + textField.returnKeyType = .search + textField.font = .font(ofSize: 12, weight: .medium) + textField.textColor = .FFFFFF + textField.attributedPlaceholder = NSAttributedString(string: "Search".localized, attributes: [ + .font : UIFont.font(ofSize: 12, weight: .medium), + .foregroundColor : UIColor.FFFFFF.withAlphaComponent(0.5) + ]) + return textField + }() + + override init(frame: CGRect) { + super.init(frame: frame) + self.layer.cornerRadius = 16 + self.layer.masksToBounds = true + self.backgroundColor = .FFFFFF_0_25 + + fa_setupLayout() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + @discardableResult + override func becomeFirstResponder() -> Bool { + super.becomeFirstResponder() + return self.textField.becomeFirstResponder() + } + + @discardableResult + override func resignFirstResponder() -> Bool { + super.resignFirstResponder() + return self.textField.resignFirstResponder() + } + +} + +extension FASearchInputView { + + private func fa_setupLayout() { + addSubview(iconImageView) + addSubview(textField) + + iconImageView.snp.makeConstraints { make in + make.centerY.equalToSuperview() + make.left.equalToSuperview().offset(18) + } + + textField.snp.makeConstraints { make in + make.top.bottom.equalToSuperview() + make.left.equalTo(iconImageView.snp.right).offset(6) + make.right.equalToSuperview().offset(-18) + } + } + +} + +//MARK: UITextFieldDelegate +extension FASearchInputView: UITextFieldDelegate { + + func textFieldShouldReturn(_ textField: UITextField) -> Bool { + textField.resignFirstResponder() + if let text = textField.text { + self.didSearch?(text) + } + return true + } + +} diff --git a/Fableon/Class/Home/V/FASearchRecommendCell.swift b/Fableon/Class/Home/V/FASearchRecommendCell.swift new file mode 100644 index 0000000..92e5172 --- /dev/null +++ b/Fableon/Class/Home/V/FASearchRecommendCell.swift @@ -0,0 +1,55 @@ +// +// FASearchRecommendCell.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/14. +// + +import UIKit + +class FASearchRecommendCell: UICollectionViewCell { + + + var model: FAShortPlayModel? { + didSet { + coverImageView.fa_setImage(model?.image_url) + titleLabel.text = model?.name + countLabel.text = "\(model?.watch_total ?? 0)" + epLabel.text = "Ep.##".localizedReplace(text: "\(model?.episode_total ?? 0)") + } + } + + var row: Int = 0 { + didSet { + let num = row + 1 + numberLabel.text = "\(num)" + switch num { + case 1: + numberLabel.textColor = .F_94_F_7_F + case 2: + numberLabel.textColor = .FE_6_C_05 + case 3: + numberLabel.textColor = .F_8_D_01_D + default: + numberLabel.textColor = .FFFFFF.withAlphaComponent(0.8) + } + } + } + + @IBOutlet weak var numberLabel: UILabel! + + @IBOutlet weak var titleLabel: UILabel! + + @IBOutlet weak var coverImageView: FAImageView! + + @IBOutlet weak var countLabel: UILabel! + + @IBOutlet weak var epLabel: UILabel! + + override func awakeFromNib() { + super.awakeFromNib() + + + } + +} diff --git a/Fableon/Class/Home/V/FASearchRecommendCell.xib b/Fableon/Class/Home/V/FASearchRecommendCell.xib new file mode 100644 index 0000000..23e123e --- /dev/null +++ b/Fableon/Class/Home/V/FASearchRecommendCell.xib @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Fableon/Class/Home/V/FASearchRecommendView.swift b/Fableon/Class/Home/V/FASearchRecommendView.swift new file mode 100644 index 0000000..eef613c --- /dev/null +++ b/Fableon/Class/Home/V/FASearchRecommendView.swift @@ -0,0 +1,99 @@ +// +// FASearchRecommendView.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/14. +// + +import UIKit + +class FASearchRecommendView: UIView { + + + override var intrinsicContentSize: CGSize { + return .init(width: UIScreen.width, height: UIScreen.height) + } + + var dataArr: [FAShortPlayModel] = [] { + didSet { + self.collectionView.reloadData() + } + } + + private lazy var bgView: UIView = { + let view = UIView() + view.backgroundColor = ._5_CA_8_FF_0_2 + view.fa_setRoundedCorner(topLeft: 27, topRight: 27, bottomLeft: 0, bottomRight: 0) + return view + }() + + private lazy var collectionViewLayout: UICollectionViewFlowLayout = { + let layout = UICollectionViewFlowLayout() + layout.itemSize = .init(width: UIScreen.width - 32, height: 70) + layout.minimumInteritemSpacing = 15 + return layout + }() + + private lazy var collectionView: FACollectionView = { + let collectionView = FACollectionView(frame: .zero, collectionViewLayout: collectionViewLayout) + collectionView.delegate = self + collectionView.dataSource = self + collectionView.showsVerticalScrollIndicator = false + collectionView.showsHorizontalScrollIndicator = false + collectionView.keyboardDismissMode = .onDrag + collectionView.contentInset = .init(top: 15, left: 0, bottom: UIScreen.safeBottom + 10, right: 0) + collectionView.register(UINib(nibName: "FASearchRecommendCell", bundle: nil), forCellWithReuseIdentifier: "cell") + return collectionView + }() + + override init(frame: CGRect) { + super.init(frame: frame) + fa_setupLayout() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + +} + +extension FASearchRecommendView { + + private func fa_setupLayout() { + addSubview(bgView) + addSubview(collectionView) + + bgView.snp.makeConstraints { make in + make.left.equalToSuperview().offset(16) + make.top.equalToSuperview() + make.bottom.equalToSuperview() + make.centerX.equalToSuperview() + } + + collectionView.snp.makeConstraints { make in + make.edges.equalTo(bgView) + } + } + +} + +//MARK: UICollectionViewDelegate UICollectionViewDataSource +extension FASearchRecommendView: UICollectionViewDelegate, UICollectionViewDataSource { + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! FASearchRecommendCell + cell.row = indexPath.row + cell.model = dataArr[indexPath.row] + return cell + } + + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return dataArr.count + } + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + let model = dataArr[indexPath.row] + let vc = FAPlayerDetailViewController() + vc.shortPlayId = model.short_play_id + self.viewController?.navigationController?.pushViewController(vc, animated: true) + } +} diff --git a/Fableon/Class/Home/V/FASearchRecordCell.swift b/Fableon/Class/Home/V/FASearchRecordCell.swift new file mode 100644 index 0000000..cf62f65 --- /dev/null +++ b/Fableon/Class/Home/V/FASearchRecordCell.swift @@ -0,0 +1,26 @@ +// +// FASearchRecordCell.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/14. +// + +import UIKit + +class FASearchRecordCell: UICollectionViewCell { + + static let TextFont: UIFont = .font(ofSize: 12, weight: .regular) + + + @IBOutlet weak var textLabel: UILabel! + + override func awakeFromNib() { + super.awakeFromNib() + contentView.layer.cornerRadius = 12 + contentView.layer.masksToBounds = true + contentView.backgroundColor = .FFFFFF_0_25 + + textLabel.font = Self.TextFont + } + +} diff --git a/Fableon/Class/Home/V/FASearchRecordCell.xib b/Fableon/Class/Home/V/FASearchRecordCell.xib new file mode 100644 index 0000000..a67160c --- /dev/null +++ b/Fableon/Class/Home/V/FASearchRecordCell.xib @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Fableon/Class/Home/V/FASearchRecordView.swift b/Fableon/Class/Home/V/FASearchRecordView.swift new file mode 100644 index 0000000..442a90d --- /dev/null +++ b/Fableon/Class/Home/V/FASearchRecordView.swift @@ -0,0 +1,135 @@ +// +// FASearchRecordView.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/14. +// + +import UIKit +import collection_view_layouts + +class FASearchRecordView: UIView { + + var didSearch: ((_ text: String) -> Void)? + var didDelete: (() -> Void)? + + var dataArr: [String] = [] { + didSet { + self.collectionView.reloadData() + } + } + + private lazy var titleLabel: UILabel = { + let label = UILabel() + label.font = .font(ofSize: 14, weight: .medium) + label.textColor = .FFFFFF + label.text = "Historical search".localized + return label + }() + + private lazy var deleteButton: UIButton = { + let button = UIButton(type: .custom) + button.setImage(UIImage(named: "路径 264"), for: .normal) + button.addAction(UIAction(handler: { [weak self] _ in + self?.didDelete?() + }), for: .touchUpInside) + return button + }() + + private lazy var collectionViewLayout: TagsLayout = { + let layout = TagsLayout() + layout.delegate = self + layout.contentPadding = ItemsPadding(horizontal: 16, vertical: 0) + layout.cellsPadding = ItemsPadding(horizontal: 12, vertical: 12) + return layout + }() + + private lazy var collectionView: FACollectionView = { + let collectionView = FACollectionView(frame: .zero, collectionViewLayout: collectionViewLayout) + collectionView.delegate = self + collectionView.dataSource = self + collectionView.addObserver(self, forKeyPath: "contentSize", context: nil) + collectionView.register(UINib(nibName: "FASearchRecordCell", bundle: nil), forCellWithReuseIdentifier: "tagCell") + return collectionView + }() + + deinit { + self.collectionView.removeObserver(self, forKeyPath: "contentSize") + } + + override init(frame: CGRect) { + super.init(frame: frame) + + fa_setupLayout() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { + if keyPath == "contentSize" { + let height = self.collectionView.contentSize.height + debugLog(height) + self.collectionView.snp.updateConstraints { make in + make.height.equalTo(height + 1) + } + } + } +} + +extension FASearchRecordView { + + private func fa_setupLayout() { + addSubview(titleLabel) + addSubview(deleteButton) + addSubview(collectionView) + + titleLabel.snp.makeConstraints { make in + make.left.equalToSuperview().offset(16) + make.centerY.equalTo(deleteButton) + } + + deleteButton.snp.makeConstraints { make in + make.right.equalToSuperview().offset(-16) + make.top.equalToSuperview() + } + + collectionView.snp.makeConstraints { make in + make.top.equalToSuperview().offset(28) + make.left.equalToSuperview() + make.right.equalToSuperview() + make.bottom.equalToSuperview() + make.height.equalTo(1) + } + } + +} + +//MARK: UICollectionViewDataSource UICollectionViewDataSource +extension FASearchRecordView: UICollectionViewDataSource, UICollectionViewDelegate { + + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return dataArr.count + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "tagCell", for: indexPath) as! FASearchRecordCell + cell.textLabel.text = dataArr[indexPath.row] + return cell + } + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + self.didSearch?(dataArr[indexPath.row]) + } +} + +//MARK: LayoutDelegate +extension FASearchRecordView: LayoutDelegate { + + func cellSize(indexPath: IndexPath) -> CGSize { + let text = dataArr[indexPath.row] + let size = text.size(FASearchRecordCell.TextFont, .init(width: UIScreen.width, height: 24)) + return .init(width: size.width + 24, height: 24) + } +} diff --git a/Fableon/Class/Home/V/FASearchResultCell.swift b/Fableon/Class/Home/V/FASearchResultCell.swift new file mode 100644 index 0000000..1ab538b --- /dev/null +++ b/Fableon/Class/Home/V/FASearchResultCell.swift @@ -0,0 +1,52 @@ +// +// FASearchResultCell.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/14. +// + +import UIKit + +class FASearchResultCell: UICollectionViewCell { + + + static let CellWidth: CGFloat = floor((UIScreen.width - 32 - 13) / 2) + static let CoverHeight: CGFloat = 219 / 164 * CellWidth + static let TitleFont = UIFont.font(ofSize: 14, weight: .medium) + + var model: FAShortPlayModel? { + didSet { + titleLabel.text = model?.name + coverImageView.fa_setImage(model?.image_url) + + if let category = model?.category?.first, !category.isEmpty { + categoryView.isHidden = false + categoryLabel.text = category + } else { + categoryView.isHidden = true + } + } + } + + + + @IBOutlet weak var coverImageView: FAImageView! + + @IBOutlet weak var titleLabel: UILabel! + + @IBOutlet weak var categoryView: UIView! + + @IBOutlet weak var categoryLabel: UILabel! + + @IBOutlet weak var coverHeight: NSLayoutConstraint! + + override func awakeFromNib() { + super.awakeFromNib() + titleLabel.font = Self.TitleFont + + + + coverHeight.constant = Self.CoverHeight + } + +} diff --git a/Fableon/Class/Home/V/FASearchResultCell.xib b/Fableon/Class/Home/V/FASearchResultCell.xib new file mode 100644 index 0000000..56b8219 --- /dev/null +++ b/Fableon/Class/Home/V/FASearchResultCell.xib @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Fableon/Class/Home/V/FASearchResultView.swift b/Fableon/Class/Home/V/FASearchResultView.swift new file mode 100644 index 0000000..afaa066 --- /dev/null +++ b/Fableon/Class/Home/V/FASearchResultView.swift @@ -0,0 +1,113 @@ +// +// FASearchResultView.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/14. +// + +import UIKit + +class FASearchResultView: UIView { + + weak var viewModel: FASearchViewModel? + + var dataArr: [FAShortPlayModel] = [] + + private lazy var collectionViewLayout: FAWaterfallFlowLayout = { + let layout = FAWaterfallFlowLayout() + layout.delegate = self + return layout + }() + + private lazy var collectionView: FACollectionView = { + let collectionView = FACollectionView(frame: .zero, collectionViewLayout: collectionViewLayout) + collectionView.delegate = self + collectionView.dataSource = self + collectionView.ly_emptyView = FAEmpty.fa_emptyView(image: UIImage(named: "__question"), title: "empty_title_01".localized) + collectionView.register(UINib(nibName: "FASearchResultCell", bundle: nil), forCellWithReuseIdentifier: "cell") + return collectionView + }() + + override init(frame: CGRect) { + super.init(frame: frame) + + fa_setupLayout() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + func search(_ text: String) { + if text.isEmpty { + self.dataArr.removeAll() + self.collectionView.reloadData() + return + } + + FAAPI.requestSearch(text: text) { [weak self] list in + guard let self = self else { return } + guard let list = list else { return } + self.dataArr = list + self.collectionView.reloadData() + } + } + +} + +extension FASearchResultView { + + private func fa_setupLayout() { + addSubview(collectionView) + + collectionView.snp.makeConstraints { make in + make.left.right.bottom.equalToSuperview() + make.top.equalToSuperview().offset(20) + } + } + +} + + +//MARK: UICollectionViewDelegate UICollectionViewDataSource +extension FASearchResultView: UICollectionViewDelegate, UICollectionViewDataSource { + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! FASearchResultCell + cell.model = dataArr[indexPath.row] + return cell + } + + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return dataArr.count + } + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + let model = dataArr[indexPath.row] + let vc = FAPlayerDetailViewController() + vc.shortPlayId = model.short_play_id + self.viewController?.navigationController?.pushViewController(vc, animated: true) + } +} + +//MARK: FAWaterfallMutiSectionDelegate +extension FASearchResultView: FAWaterfallMutiSectionDelegate { + + func heightForRowAtIndexPath(collectionView collection: UICollectionView, layout: FAWaterfallFlowLayout, indexPath: IndexPath, itemWidth: CGFloat) -> CGFloat { + let text = dataArr[indexPath.row].name ?? "" + + return FASearchResultCell.CoverHeight + text.size(FASearchResultCell.TitleFont, .init(width: FASearchResultCell.CellWidth - 24, height: CGFloat(MAXFLOAT))).height + 18 + } + + func interitemSpacing(collectionView collection: UICollectionView, layout: FAWaterfallFlowLayout, section: Int) -> CGFloat { + return 13 + } + + func lineSpacing(collectionView collection: UICollectionView, layout: FAWaterfallFlowLayout, section: Int) -> CGFloat { + return 12 + } + + func insetForSection(collectionView collection: UICollectionView, layout: FAWaterfallFlowLayout, section: Int) -> UIEdgeInsets { + return .init(top: 0, left: 16, bottom: 0, right: 16) + } + +} diff --git a/Fableon/Class/Home/VM/FAHomeViewModel.swift b/Fableon/Class/Home/VM/FAHomeViewModel.swift new file mode 100644 index 0000000..ae64c98 --- /dev/null +++ b/Fableon/Class/Home/VM/FAHomeViewModel.swift @@ -0,0 +1,115 @@ +// +// FAHomeViewModel.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/8/26. +// + +import SwiftUI + +@MainActor +class FAHomeViewModel: ObservableObject { + + @Published var dataArr: [FAHomeItem] = [] + + @Published var bannerItem: FAHomeModuleItem? + @Published var mustSeeArr: [FAHomeModuleItem] = [] + @Published var homeNewItem: FAHomeModuleItem? + @Published var recommendedItem: FAHomeModuleItem? + + func requestHomeData(completer: (() -> Void)?) { + FAAPI.requestHomeModulesData { [weak self] list in + guard let self = self else { return } + guard let list = list else { + completer?() + return + } + self.dataArr.removeAll() + + var popularItem: FAHomeModuleItem? + var rankingsItem: FAHomeModuleItem? + var genresItem: FAHomeModuleItem? + var newItem: FAHomeModuleItem? + + list.forEach { + if $0.module_key == .banner { + self.bannerItem = $0 + } else if $0.module_key == .v3_recommand { + $0.title = "Popular".localized + popularItem = $0 + } else if $0.module_key == .week_ranking { + $0.title = "Rankings".localized + rankingsItem = $0 + } else if $0.module_key == .cagetory_recommand, genresItem == nil { + $0.title = "Genres".localized + genresItem = $0 + } else if $0.module_key == .new_recommand { + $0.title = "New".localized + newItem = $0 + self.homeNewItem = $0 + } else if $0.module_key == .week_recommend { + self.recommendedItem = $0 + } + } + + var mustAee: [FAHomeModuleItem] = [] + if let item = popularItem { + mustAee.append(item) + } + if let item = rankingsItem { + mustAee.append(item) + } + if let item = genresItem { + mustAee.append(item) + } + if let item = newItem { + mustAee.append(item) + } + self.mustSeeArr = mustAee + + if let item = self.bannerItem { + let homeItem = FAHomeItem() + homeItem.type = .banner + homeItem.data = item + homeItem.cellHeight = 150 + self.dataArr.append(homeItem) + } + + if self.mustSeeArr.count > 0 { + let homeItem = FAHomeItem() + homeItem.type = .mustSee + homeItem.data = self.mustSeeArr + homeItem.cellHeight = 350 + self.dataArr.append(homeItem) + } + + if let item = self.homeNewItem { + let homeItem = FAHomeItem() + homeItem.type = .new + homeItem.data = item + homeItem.cellHeight = 272 + self.dataArr.append(homeItem) + } + + if let item = self.recommendedItem { + let homeItem = FAHomeItem() + homeItem.type = .recommended + homeItem.data = item + self.dataArr.append(homeItem) + } + completer?() + } + } +} + +extension FAHomeViewModel { + + func pushPlayerDetail(_ model: FAShortPlayModel?) { + guard let model = model else { return } + + let vc = FAPlayerDetailViewController() + vc.shortPlayId = model.short_play_id + FATool.topViewController?.navigationController?.pushViewController(vc, animated: true) + } + +} diff --git a/Fableon/Class/Home/VM/FASearchViewModel.swift b/Fableon/Class/Home/VM/FASearchViewModel.swift new file mode 100644 index 0000000..89451e9 --- /dev/null +++ b/Fableon/Class/Home/VM/FASearchViewModel.swift @@ -0,0 +1,57 @@ +// +// FASearchViewModel.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/14. +// + +import UIKit + +class FASearchViewModel: NSObject { + static let searchRecordUserDefaultKey = "FASearchViewModel.searchRecordUserDefaultKey" + + @objc dynamic private(set) var recordList: [String] = (UserDefaults.standard.object(forKey: FASearchViewModel.searchRecordUserDefaultKey) as? [String]) ?? [] + + @objc dynamic private(set) lazy var recommendData: [FAShortPlayModel] = [] + + + + func addSearchRecord(text: String) { + guard !text.isEmpty else { return } + var list = recordList + + for (index, value) in list.enumerated() { + if value == text { + list.remove(at: index) + break + } + } + + list.insert(text, at: 0) + + if list.count > 10 { + list.removeLast() + } + recordList = list + + UserDefaults.standard.set(list, forKey: FASearchViewModel.searchRecordUserDefaultKey) + } + + func clearSearchRecord() { + recordList.removeAll() + UserDefaults.standard.set(recordList, forKey: FASearchViewModel.searchRecordUserDefaultKey) + } + + ///获取推荐搜索 + func requestSearchRecommendData(completer: (() -> Void)?) { + FAAPI.requestHotSearchData { [weak self] list in + guard let self = self else { return } + if let list = list { + self.recommendData = list + } + } + } + + + +} diff --git a/Fableon/Class/Me/C/FAAboutViewController.swift b/Fableon/Class/Me/C/FAAboutViewController.swift new file mode 100644 index 0000000..d97f0cd --- /dev/null +++ b/Fableon/Class/Me/C/FAAboutViewController.swift @@ -0,0 +1,106 @@ +// +// FAAboutViewController.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/15. +// + +import UIKit + +class FAAboutViewController: FAViewController { + + + private lazy var dataArr: [FAMeItemModel] = [ + FAMeItemModel(type: .privacyPolicy, name: "Privacy Policy".localized), + FAMeItemModel(type: .userAgreement, name: "User Agreement".localized), + FAMeItemModel(type: .visitWebsite, name: "Visit Website".localized), + ] + + private lazy var tableView: FATableView = { + let tableView = FATableView(frame: .zero, style: .plain) + tableView.tableHeaderView = self.headerView + tableView.delegate = self + tableView.dataSource = self + tableView.separatorInset = .init(top: 0, left: 32, bottom: 0, right: 32) + tableView.register(UINib(nibName: "FAAboutCell", bundle: nil), forCellReuseIdentifier: "cell") + return tableView + }() + + private lazy var headerView: FAAboutHeaderView = { + let view = FAAboutHeaderView(frame: .init(x: 0, y: 0, width: UIScreen.width, height: 186)) + return view + }() + + override func viewDidLoad() { + super.viewDidLoad() + self.title = "About".localized + + fa_setupLayout() + } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + self.navigationController?.setNavigationBarHidden(false, animated: true) + self.fa_setNavigationStyle() + } + +} + +extension FAAboutViewController { + + private func fa_setupLayout() { + view.addSubview(tableView) + + tableView.snp.makeConstraints { make in + make.left.right.bottom.equalToSuperview() + make.top.equalToSuperview().offset(UIScreen.navBarHeight) + } + } + +} + + +//MARK: UITableViewDelegate UITableViewDataSource +extension FAAboutViewController: UITableViewDelegate, UITableViewDataSource { + + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return dataArr.count + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! FAAboutCell + cell.item = dataArr[indexPath.row] + return cell + } + + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + let item = dataArr[indexPath.row] + var urlStr: String? = nil + + switch item.type { + case .privacyPolicy: + urlStr = FAWebBaseURL + "/private" + + case .userAgreement: + urlStr = FAWebBaseURL + "/user_policy" + + case .visitWebsite: + if let url = URL(string: FAWebBaseURL) { + UIApplication.shared.open(url) + } + default: + break + } + + if let urlStr = urlStr { + let vc = FABaseWebViewController() + vc.webUrl = urlStr + self.navigationController?.pushViewController(vc, animated: true) + + } + + } + + + +} diff --git a/Fableon/Class/Me/C/FAFeedbackViewController.swift b/Fableon/Class/Me/C/FAFeedbackViewController.swift new file mode 100644 index 0000000..e6534f3 --- /dev/null +++ b/Fableon/Class/Me/C/FAFeedbackViewController.swift @@ -0,0 +1,30 @@ +// +// FAFeedbackViewController.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/16. +// + +import UIKit + +class FAFeedbackViewController: FAAppWebViewController { + + override func viewDidLoad() { + self.webUrl = kFAFeedBackHomeWebUrl + super.viewDidLoad() + + + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/Fableon/Class/Me/C/FAMeViewController.swift b/Fableon/Class/Me/C/FAMeViewController.swift new file mode 100644 index 0000000..2f21b59 --- /dev/null +++ b/Fableon/Class/Me/C/FAMeViewController.swift @@ -0,0 +1,188 @@ +// +// FAMeViewController.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/29. +// + +import UIKit +import YYText + +class FAMeViewController: FAViewController { + + + private lazy var dataArr: [FAMeItemModel] = { + let arr = [ +// FAMeItemModel(type: .feedback, name: "Feedback".localized, icon: UIImage(named: "icon_feedback")), + FAMeItemModel(type: .about, name: "About".localized, icon: UIImage(named: "icon_about")), +// FAMeItemModel(type: .setting, name: "Setting".localized, icon: UIImage(named: "icon_setting")) + + FAMeItemModel(type: .privacyPolicy, name: "Privacy Policy".localized, icon: UIImage(named: "icon_privacy")), + FAMeItemModel(type: .userAgreement, name: "User Agreement".localized, icon: UIImage(named: "icon_user")), + FAMeItemModel(type: .visitWebsite, name: "Visit Website".localized, icon: UIImage(named: "icon_visit")), + ] + return arr + }() + + + private lazy var scrollView: FAScrollView = { + let scrollView = FAScrollView() + return scrollView + }() + + private lazy var headerView: FAMeHeaderView = { + let view = FAMeHeaderView() + view.userInfo = FALogin.manager.userInfo + return view + }() + + private lazy var contentView: UIView = { + let view = UIView() + view.backgroundColor = ._4_D_4_A_4_A.withAlphaComponent(0.5) + view.fa_setRoundedCorner(topLeft: 30, topRight: 30, bottomLeft: 0, bottomRight: 0) + return view + }() + + private lazy var tableView: FATableView = { + let tableView = FATableView(frame: .zero, style: .plain) + tableView.delegate = self + tableView.dataSource = self + tableView.rowHeight = 56 + tableView.separatorInset = .init(top: 0, left: 32, bottom: 0, right: 32) + tableView.register(UINib(nibName: "FAMeCell", bundle: nil), forCellReuseIdentifier: "cell") + tableView.addObserver(self, forKeyPath: "contentSize", context: nil) + return tableView + }() + + deinit { + NotificationCenter.default.removeObserver(self) + } + + override func viewDidLoad() { + super.viewDidLoad() + NotificationCenter.default.addObserver(self, selector: #selector(userInfoUpdateNotification), name: FALogin.userInfoUpdateNotification, object: nil) + + fa_setupLayout() + } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + self.navigationController?.setNavigationBarHidden(true, animated: true) + } + + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + FALogin.manager.requestUserInfo(completer: nil) + } + + override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { + if keyPath == "contentSize" { + self.updateLayout() + } + } + + + @objc private func userInfoUpdateNotification() { + headerView.userInfo = FALogin.manager.userInfo + } + +} + +extension FAMeViewController { + + private func fa_setupLayout() { + view.addSubview(scrollView) + scrollView.addSubview(headerView) + scrollView.addSubview(contentView) + contentView.addSubview(tableView) + + scrollView.snp.makeConstraints { make in + make.left.right.bottom.equalToSuperview() + make.top.equalToSuperview().offset(UIScreen.safeTop) + } + + headerView.snp.makeConstraints { make in + make.left.centerX.equalToSuperview() + make.top.equalToSuperview().offset(40) + } + + contentView.snp.makeConstraints { make in + make.left.centerX.equalToSuperview() + make.top.equalTo(headerView.snp.bottom).offset(24) + make.bottom.equalToSuperview() + make.height.equalTo(UIScreen.height - UIScreen.tabBarHeight - UIScreen.safeTop) + } + + tableView.snp.makeConstraints { make in + make.left.right.bottom.equalToSuperview() + make.top.equalToSuperview().offset(19) + } + } + + private func updateLayout() { + let maxHeight = UIScreen.height - UIScreen.tabBarHeight - UIScreen.safeTop + let minHeight = UIScreen.height - UIScreen.tabBarHeight - UIScreen.safeTop - self.headerView.height - 40 - 24 + var height = self.tableView.contentSize.height + if height > maxHeight { + height = maxHeight + } + if height < minHeight { + height = minHeight + } + + contentView.snp.updateConstraints { make in + make.height.equalTo(height) + } + } + +} + +//MARK: UITableViewDelegate, UITableViewDataSource +extension FAMeViewController: UITableViewDelegate, UITableViewDataSource { + + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! FAMeCell + cell.item = dataArr[indexPath.row] + return cell + } + + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return dataArr.count + } + + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + let item = dataArr[indexPath.row] + switch item.type { + case .about: + let vc = FAAboutViewController() + self.navigationController?.pushViewController(vc, animated: true) + + case .setting: + let vc = FASettingViewController() + self.navigationController?.pushViewController(vc, animated: true) + + case .feedback: + let vc = FAFeedbackViewController() + self.navigationController?.pushViewController(vc, animated: true) + + case .privacyPolicy: + let vc = FABaseWebViewController() + vc.webUrl = FAWebBaseURL + "/private" + self.navigationController?.pushViewController(vc, animated: true) + + case .userAgreement: + let vc = FABaseWebViewController() + vc.webUrl = FAWebBaseURL + "/user_policy" + self.navigationController?.pushViewController(vc, animated: true) + + case .visitWebsite: + if let url = URL(string: FAWebBaseURL) { + UIApplication.shared.open(url) + } + + default: + break + } + } +} diff --git a/Fableon/Class/Me/C/FASettingViewController.swift b/Fableon/Class/Me/C/FASettingViewController.swift new file mode 100644 index 0000000..74d8a8e --- /dev/null +++ b/Fableon/Class/Me/C/FASettingViewController.swift @@ -0,0 +1,26 @@ +// +// FASettingViewController.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/16. +// + +import UIKit + +class FASettingViewController: FAViewController { + + override func viewDidLoad() { + super.viewDidLoad() + self.title = "Settings".localized + + } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + self.navigationController?.setNavigationBarHidden(false, animated: true) + self.fa_setNavigationStyle() + } + + + +} diff --git a/Fableon/Class/Me/M/FAMeItemModel.swift b/Fableon/Class/Me/M/FAMeItemModel.swift new file mode 100644 index 0000000..81aa17b --- /dev/null +++ b/Fableon/Class/Me/M/FAMeItemModel.swift @@ -0,0 +1,25 @@ +// +// FAMeItemModel.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/29. +// + +import UIKit + +struct FAMeItemModel { + + enum ItemType { + case feedback + case about + case setting + case privacyPolicy + case userAgreement + case visitWebsite + } + + + var type: ItemType? + var name: String? + var icon: UIImage? +} diff --git a/Fableon/Class/Me/V/FAAboutCell.swift b/Fableon/Class/Me/V/FAAboutCell.swift new file mode 100644 index 0000000..3834c30 --- /dev/null +++ b/Fableon/Class/Me/V/FAAboutCell.swift @@ -0,0 +1,33 @@ +// +// FAAboutCell.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/15. +// + +import UIKit + +class FAAboutCell: FATableViewCell { + + var item: FAMeItemModel? { + didSet { + titleLabel.text = item?.name + } + } + + + @IBOutlet weak var titleLabel: UILabel! + + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + + override func setSelected(_ selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + + // Configure the view for the selected state + } + +} diff --git a/Fableon/Class/Me/V/FAAboutCell.xib b/Fableon/Class/Me/V/FAAboutCell.xib new file mode 100644 index 0000000..f309d42 --- /dev/null +++ b/Fableon/Class/Me/V/FAAboutCell.xib @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Fableon/Class/Me/V/FAAboutHeaderView.swift b/Fableon/Class/Me/V/FAAboutHeaderView.swift new file mode 100644 index 0000000..3d2adc9 --- /dev/null +++ b/Fableon/Class/Me/V/FAAboutHeaderView.swift @@ -0,0 +1,68 @@ +// +// FAAboutHeaderView.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/15. +// + +import UIKit + +class FAAboutHeaderView: UIView { + + private lazy var appLogoView: UIImageView = { + let imageView = UIImageView(image: UIImage(named: "logo_image_01")) + imageView.layer.cornerRadius = 8 + imageView.layer.masksToBounds = true + return imageView + }() + + private lazy var nameLabel: UILabel = { + let label = UILabel() + label.font = .font(ofSize: 18, weight: .bold) + label.textColor = .FFFFFF + label.text = kFAAPPName + return label + }() + + private lazy var versionLabel: UILabel = { + let label = UILabel() + label.font = .font(ofSize: 12, weight: .regular) + label.textColor = ._999999 + label.text = "Version \(kFAAPPVersion)" + return label + }() + + override init(frame: CGRect) { + super.init(frame: frame) + fa_setupLayout() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + +} + +extension FAAboutHeaderView { + private func fa_setupLayout() { + addSubview(appLogoView) + addSubview(nameLabel) + addSubview(versionLabel) + + appLogoView.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.top.equalToSuperview().offset(30) + make.width.height.equalTo(84) + } + + nameLabel.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.top.equalTo(appLogoView.snp.bottom).offset(13) + } + + versionLabel.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.top.equalTo(nameLabel.snp.bottom).offset(6) + } + } +} diff --git a/Fableon/Class/Me/V/FAMeCell.swift b/Fableon/Class/Me/V/FAMeCell.swift new file mode 100644 index 0000000..3459770 --- /dev/null +++ b/Fableon/Class/Me/V/FAMeCell.swift @@ -0,0 +1,36 @@ +// +// FAMeCell.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/29. +// + +import UIKit + +class FAMeCell: FATableViewCell { + + + var item: FAMeItemModel? { + didSet { + iconImageView.image = item?.icon + nameLabel.text = item?.name + } + } + + @IBOutlet weak var iconImageView: UIImageView! + + @IBOutlet weak var nameLabel: UILabel! + + + override func awakeFromNib() { + super.awakeFromNib() + + } + + override func setSelected(_ selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + + // Configure the view for the selected state + } + +} diff --git a/Fableon/Class/Me/V/FAMeCell.xib b/Fableon/Class/Me/V/FAMeCell.xib new file mode 100644 index 0000000..0b0e53b --- /dev/null +++ b/Fableon/Class/Me/V/FAMeCell.xib @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Fableon/Class/Me/V/FAMeHeaderView.swift b/Fableon/Class/Me/V/FAMeHeaderView.swift new file mode 100644 index 0000000..4514e01 --- /dev/null +++ b/Fableon/Class/Me/V/FAMeHeaderView.swift @@ -0,0 +1,78 @@ +// +// FAMeHeaderView.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/29. +// + +import UIKit + +class FAMeHeaderView: UIView { + + var userInfo: FAUserInfo? { + didSet { + avatarImageView.fa_setImage(userInfo?.avator) + + userNameLabel.text = userInfo?.getNickName() + + idLabel.text = "ID:\(userInfo?.customer_id ?? "")" + } + } + + private lazy var avatarImageView: FAImageView = { + let imageView = FAImageView() + imageView.layer.cornerRadius = 33 + return imageView + }() + + private lazy var userNameLabel: UILabel = { + let label = UILabel() + label.font = .font(ofSize: 14, weight: .medium) + label.textColor = .FFFFFF + return label + }() + + private lazy var idLabel: UILabel = { + let label = UILabel() + label.font = .font(ofSize: 12, weight: .regular) + label.textColor = .FFFFFF.withAlphaComponent(0.5) + return label + }() + + override init(frame: CGRect) { + super.init(frame: frame) + fa_setupLayout() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +extension FAMeHeaderView { + + private func fa_setupLayout() { + addSubview(avatarImageView) + addSubview(userNameLabel) + addSubview(idLabel) + + avatarImageView.snp.makeConstraints { make in + make.left.equalToSuperview().offset(16) + make.top.equalToSuperview() + make.width.height.equalTo(66) + make.bottom.equalToSuperview() + } + + userNameLabel.snp.makeConstraints { make in + make.top.equalTo(avatarImageView).offset(15) + make.left.equalTo(avatarImageView.snp.right).offset(12) + make.right.lessThanOrEqualToSuperview().offset(-16) + } + + idLabel.snp.makeConstraints { make in + make.left.equalTo(userNameLabel) + make.top.equalTo(userNameLabel.snp.bottom).offset(2) + } + } + +} diff --git a/Fableon/Class/MyShort/C/FACollectViewController.swift b/Fableon/Class/MyShort/C/FACollectViewController.swift new file mode 100644 index 0000000..bda7457 --- /dev/null +++ b/Fableon/Class/MyShort/C/FACollectViewController.swift @@ -0,0 +1,193 @@ +// +// FACollectViewController.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/9. +// + +import UIKit +import SnapKit + +class FACollectViewController: FAViewController { + + + private lazy var page = 1 + private lazy var dataArr: [FAShortPlayModel] = [] + + private lazy var fa_isEditing = false { + didSet { + updateBarButton() + self.collectionView.reloadData() + } + } + + + private lazy var collectionViewLayout: UICollectionViewFlowLayout = { + let width = floor((UIScreen.width - 16 - 32) / 3) + let height = 145 / 109 * width + + let layout = UICollectionViewFlowLayout() + layout.itemSize = .init(width: width, height: height + 59) + layout.minimumLineSpacing = 12 + layout.minimumInteritemSpacing = 8 + layout.sectionInset = .init(top: 0, left: 16, bottom: 0, right: 16) + return layout + }() + + private lazy var collectionView: FACollectionView = { + let collectionView = FACollectionView(frame: .zero, collectionViewLayout: self.collectionViewLayout) + collectionView.contentInset = .init(top: 20, left: 0, bottom: 10, right: 0) + collectionView.delegate = self + collectionView.dataSource = self + collectionView.ly_emptyView = FAEmpty.fa_emptyView(image: UIImage(named: "__shop-72"), title: "empty_title_02".localized) + collectionView.register(UINib(nibName: "FACollectCell", bundle: nil), forCellWithReuseIdentifier: "cell") + collectionView.fa_addRefreshHeader(insetTop: collectionView.contentInset.top) { [weak self] in + guard let self = self else { return } + self.handleHeaderRefresh(nil) + } + collectionView.fa_addRefreshFooter(insetBottom: 0) { [weak self] in + self?.handleFooterRefresh(nil) + } + + return collectionView + }() + + private lazy var editBarButton: UIBarButtonItem = { + let item = UIBarButtonItem(image: UIImage(named: "编辑_icon"), style: .plain, target: self, action: #selector(handleEditButton)) + return item + }() + + private lazy var historyButton: UIBarButtonItem = { + let item = UIBarButtonItem(image: UIImage(named: "历史记录_icon"), style: .plain, target: self, action: #selector(handleHistoryButton)) + return item + }() + + private lazy var spaceButton: UIBarButtonItem = { + let item = UIBarButtonItem.fixedSpace(0) + return item + }() + + override func viewDidLoad() { + super.viewDidLoad() + self.edgesForExtendedLayout = .top + self.title = "Collect".localized + + + self.navigationItem.rightBarButtonItems = [historyButton, spaceButton, editBarButton] + + fa_setupLayout() + + requestDataArr(page: 1, completer: nil) + + updateBarButton() + } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + self.navigationController?.setNavigationBarHidden(false, animated: true) + } + + override func viewDidDisappear(_ animated: Bool) { + super.viewDidDisappear(animated) + self.fa_isEditing = false + } + + private func updateBarButton() { + if fa_isEditing { + editBarButton.image = UIImage(named: "done") + } else { + editBarButton.image = UIImage(named: "编辑_icon") + } + } + + @objc private func handleEditButton() { + fa_isEditing = !fa_isEditing + } + + @objc private func handleHistoryButton() { + + let vc = FAHistoryViewController() + self.navigationController?.pushViewController(vc, animated: true) + } + + override func handleHeaderRefresh(_ completer: (() -> Void)?) { + self.requestDataArr(page: 1) { [weak self] in + self?.collectionView.fa_endHeaderRefreshing() + } + } + + override func handleFooterRefresh(_ completer: (() -> Void)?) { + self.requestDataArr(page: self.page + 1) { [weak self] in + self?.collectionView.fa_endFooterRefreshing() + } + } + +} + +extension FACollectViewController { + + private func fa_setupLayout() { + view.addSubview(collectionView) + + collectionView.snp.makeConstraints { make in + make.left.right.bottom.equalToSuperview() + make.top.equalToSuperview().offset(UIScreen.navBarHeight) + } + } + +} + +//MARK: UICollectionViewDataSource UICollectionViewDelegate +extension FACollectViewController: UICollectionViewDataSource, UICollectionViewDelegate { + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! FACollectCell + cell.model = self.dataArr[indexPath.row] + cell.isEditing = fa_isEditing + cell.clickDeleteButton = { [weak self] cell in + guard let self = self else { return } + guard let indexPath = self.collectionView.indexPath(for: cell) else { return } + guard let shortPlayId = cell.model?.short_play_id else { return } + + FAAPI.requestShortCollect(isCollect: false, shortPlayId: shortPlayId, videoId: cell.model?.short_play_video_id) { [weak self] in + guard let self = self else { return } + self.dataArr.remove(at: indexPath.row) + self.collectionView.deleteItems(at: [indexPath]) + } + } + return cell + } + + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return dataArr.count + } + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + let model = self.dataArr[indexPath.row] + + let vc = FAPlayerDetailViewController() + vc.shortPlayId = model.short_play_id + FATool.topViewController?.navigationController?.pushViewController(vc, animated: true) + } +} + + +extension FACollectViewController { + + private func requestDataArr(page: Int, completer: (() -> Void)?) { + FAAPI.requestCollectList(page: page) { [weak self] listModel in + guard let self = self else { return } + if let list = listModel?.list { + if page == 1 { + self.dataArr.removeAll() + } + self.dataArr += list + self.collectionView.reloadData() + self.page = page + } + completer?() + + self.collectionView.fa_updateNoMoreDataState(listModel?.hasNextPage) + } + } +} diff --git a/Fableon/Class/MyShort/C/FAHistoryViewController.swift b/Fableon/Class/MyShort/C/FAHistoryViewController.swift new file mode 100644 index 0000000..203ec61 --- /dev/null +++ b/Fableon/Class/MyShort/C/FAHistoryViewController.swift @@ -0,0 +1,126 @@ +// +// FAHistoryViewController.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/9. +// + +import UIKit + +class FAHistoryViewController: FAViewController { + + + private lazy var page = 1 + private lazy var dataArr: [FAShortPlayModel] = [] + + private lazy var collectionViewLayout: UICollectionViewFlowLayout = { + let layout = UICollectionViewFlowLayout() + layout.minimumLineSpacing = 12 + layout.itemSize = .init(width: UIScreen.width - 32, height: 115) + return layout + }() + + private lazy var collectionView: FACollectionView = { + let collectionView = FACollectionView(frame: .zero, collectionViewLayout: collectionViewLayout) + collectionView.delegate = self + collectionView.dataSource = self + collectionView.ly_emptyView = FAEmpty.fa_emptyView(image: UIImage(named: "__shop-72"), title: "empty_title_02".localized) + collectionView.contentInset = .init(top: 20, left: 0, bottom: UIScreen.safeBottom + 10, right: 0) + collectionView.register(UINib(nibName: "FAHistoryCell", bundle: nil), forCellWithReuseIdentifier: "cell") + collectionView.fa_addRefreshHeader(insetTop: collectionView.contentInset.top) { [weak self] in + guard let self = self else { return } + self.handleHeaderRefresh(nil) + } + collectionView.fa_addRefreshFooter(insetBottom: 0) { [weak self] in + self?.handleFooterRefresh(nil) + } + return collectionView + }() + + override func viewDidLoad() { + super.viewDidLoad() + self.title = "History".localized + self.edgesForExtendedLayout = .top + + fa_setupLayout() + + self.requestDataArr(page: 1, completer: nil) + } + + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + self.navigationController?.setNavigationBarHidden(false, animated: true) + fa_setNavigationStyle() + } + + override func handleHeaderRefresh(_ completer: (() -> Void)?) { + self.requestDataArr(page: 1) { [weak self] in + self?.collectionView.fa_endHeaderRefreshing() + } + } + + override func handleFooterRefresh(_ completer: (() -> Void)?) { + self.requestDataArr(page: self.page + 1) { [weak self] in + self?.collectionView.fa_endFooterRefreshing() + } + } + +} + +extension FAHistoryViewController { + + private func fa_setupLayout() { + view.addSubview(collectionView) + + collectionView.snp.makeConstraints { make in + make.left.right.bottom.equalToSuperview() + make.top.equalToSuperview().offset(UIScreen.navBarHeight) + } + } + +} + +//MARK: UICollectionViewDelegate UICollectionViewDataSource +extension FAHistoryViewController: UICollectionViewDelegate, UICollectionViewDataSource { + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! FAHistoryCell + cell.model = dataArr[indexPath.row] + return cell + } + + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return self.dataArr.count + } + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + let model = dataArr[indexPath.row] + let vc = FAPlayerDetailViewController() + vc.shortPlayId = model.short_play_id + self.navigationController?.pushViewController(vc, animated: true) + } +} + +extension FAHistoryViewController { + + private func requestDataArr(page: Int, completer: (() -> Void)?) { + + FAAPI.requestPlayHistorys(page: page) { [weak self] listModel in + guard let self = self else { return } + + if let list = listModel?.list { + if page == 1 { + self.dataArr.removeAll() + } + self.dataArr += list + self.page = page + self.collectionView.reloadData() + } + completer?() + + self.collectionView.fa_updateNoMoreDataState(listModel?.hasNextPage) + } + } + + +} diff --git a/Fableon/Class/MyShort/V/FACollectCell.swift b/Fableon/Class/MyShort/V/FACollectCell.swift new file mode 100644 index 0000000..77be407 --- /dev/null +++ b/Fableon/Class/MyShort/V/FACollectCell.swift @@ -0,0 +1,51 @@ +// +// FACollectCell.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/9. +// + +import UIKit + +class FACollectCell: UICollectionViewCell { + + + var clickDeleteButton: ((_ cell: FACollectCell) -> Void)? + + var model: FAShortPlayModel? { + didSet { + nameLabel.text = model?.name + coverImageView.fa_setImage(model?.image_url) + epLabel.text = "Ep.##".localizedReplace(text: "\(model?.episode_total ?? 0)") + } + } + + var isEditing: Bool = true { + didSet { + deleteButton.isHidden = !isEditing + } + } + + + + @IBOutlet weak var coverImageView: FAImageView! + + @IBOutlet weak var nameLabel: UILabel! + + @IBOutlet weak var epLabel: UILabel! + + @IBOutlet weak var deleteButton: UIButton! + + + override func awakeFromNib() { + super.awakeFromNib() + self.deleteButton.layer.borderWidth = 1 + self.deleteButton.layer.borderColor = UIColor.FFFFFF_0_25.cgColor + } + + @IBAction func handleDeleteButton(_ sender: Any) { + self.clickDeleteButton?(self) + } + + +} diff --git a/Fableon/Class/MyShort/V/FACollectCell.xib b/Fableon/Class/MyShort/V/FACollectCell.xib new file mode 100644 index 0000000..987dc4d --- /dev/null +++ b/Fableon/Class/MyShort/V/FACollectCell.xib @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Fableon/Class/MyShort/V/FAHistoryCell.swift b/Fableon/Class/MyShort/V/FAHistoryCell.swift new file mode 100644 index 0000000..5dd73f9 --- /dev/null +++ b/Fableon/Class/MyShort/V/FAHistoryCell.swift @@ -0,0 +1,35 @@ +// +// FAHistoryCell.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/13. +// + +import UIKit + +class FAHistoryCell: UICollectionViewCell { + + var model: FAShortPlayModel? { + didSet { + coverImageView.fa_setImage(model?.image_url) + nameLabel.text = model?.name + epLabel.text = "Ep.##".localizedReplace(text: model?.current_episode) + "/" + "Ep.##".localizedReplace(text: "\(model?.episode_total ?? 0)") + } + } + + + @IBOutlet weak var coverImageView: FAImageView! + + @IBOutlet weak var nameLabel: UILabel! + + + @IBOutlet weak var epLabel: UILabel! + + override func awakeFromNib() { + super.awakeFromNib() + self.contentView.layer.cornerRadius = 13 + self.contentView.layer.masksToBounds = true + self.contentView.backgroundColor = ._5_CA_8_FF_0_2 + } + +} diff --git a/Fableon/Class/MyShort/V/FAHistoryCell.xib b/Fableon/Class/MyShort/V/FAHistoryCell.xib new file mode 100644 index 0000000..eb00991 --- /dev/null +++ b/Fableon/Class/MyShort/V/FAHistoryCell.xib @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Fableon/Class/Player/M/FAShortDetailModel.swift b/Fableon/Class/Player/M/FAShortDetailModel.swift new file mode 100644 index 0000000..48afe9b --- /dev/null +++ b/Fableon/Class/Player/M/FAShortDetailModel.swift @@ -0,0 +1,23 @@ +// +// FAShortDetailModel.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/8/29. +// + +import UIKit +import SwiftUI +import SmartCodable + + +class FAShortDetailModel: NSObject, Identifiable, SmartCodable { + + var video_info: FAVideoInfoModel? + var shortPlayInfo: FAShortPlayModel? + var episodeList: [FAVideoInfoModel]? + var is_collect: Bool? + var share_coin: Int? + + required override init() { } + +} diff --git a/Fableon/Class/Player/M/FAShortPlayModel.swift b/Fableon/Class/Player/M/FAShortPlayModel.swift new file mode 100644 index 0000000..7078890 --- /dev/null +++ b/Fableon/Class/Player/M/FAShortPlayModel.swift @@ -0,0 +1,39 @@ +// +// FAShortPlayModel.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/8/26. +// + +import UIKit +import SmartCodable + +class FAShortPlayModel: NSObject, Identifiable, SmartCodable { + required override init() { } + + var id: String? + var fa_description: String? + var name: String? + var watch_total: Int? + var current_episode: String? + var image_url: String? + var is_collect: Bool? + var collect_total: Int? + var episode_total: Int? + var horizontally_img: String? + var category: [String]? + var short_play_id: String? + var short_play_video_id: String? + var video_info: FAVideoInfoModel? + + @SmartIgnored + var cellHeight: CGFloat = 0 + + + static func mappingForKey() -> [SmartKeyTransformer]? { + return [ + CodingKeys.fa_description <--- ["description", "short_video_description"], + CodingKeys.name <--- ["short_video_title", "name"] + ] + } +} diff --git a/Fableon/Class/Player/M/FAVideoInfoModel.swift b/Fableon/Class/Player/M/FAVideoInfoModel.swift new file mode 100644 index 0000000..5644c4a --- /dev/null +++ b/Fableon/Class/Player/M/FAVideoInfoModel.swift @@ -0,0 +1,25 @@ +// +// FAVideoInfoModel.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/8/29. +// + +import UIKit +import SmartCodable + +class FAVideoInfoModel: NSObject, Identifiable, SmartCodable { + + required override init() { } + + var short_play_id: String? + var short_play_video_id: String? + var video_url: String? + var episode: String? + var coins: Int? + ///是否锁定,购买后解锁 + var is_lock: Bool? + var image_url: String? + ///播放进度,毫秒 + var play_seconds: Int? +} diff --git a/Fableon/Class/Player/UI/FAPlayerEpUIButton.swift b/Fableon/Class/Player/UI/FAPlayerEpUIButton.swift new file mode 100644 index 0000000..72647c1 --- /dev/null +++ b/Fableon/Class/Player/UI/FAPlayerEpUIButton.swift @@ -0,0 +1,46 @@ +// +// FAPlayerEpUIButton.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/18. +// + +import SwiftUI + +struct FAPlayerEpUIButton: View { + + var text: String? + + var clickHandle: (() -> Void)? + + var body: some View { + + HStack() { + Spacer(minLength: 14) + + HStack { + HStack(spacing: 9) { + Image("Frame 3008") + Text(text ?? "") + .font(Font.font(size: 12, weight: .regular)) + .foregroundStyle(Color.FFFFFF) + } + + Spacer() + Image("Frame 3009") + } + Spacer(minLength: 14) + } + .frame(height: 32) + .frame(maxWidth: .infinity) + .background(Color.init(.color_FFFFFF).opacity(0.2)) + .clipShape(RoundedRectangle(cornerRadius: 16)) + .onTapGesture { + self.clickHandle?() + } + } +} + +#Preview { + FAPlayerEpUIButton() +} diff --git a/Fableon/Class/Player/V/FAEpMenuView.swift b/Fableon/Class/Player/V/FAEpMenuView.swift new file mode 100644 index 0000000..305f227 --- /dev/null +++ b/Fableon/Class/Player/V/FAEpMenuView.swift @@ -0,0 +1,187 @@ +// +// FAEpMenuView.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/29. +// + +import UIKit +import YYCategories + +class FAEpMenuView: UIView { + + override var intrinsicContentSize: CGSize { + return CGSize(width: UIScreen.width, height: 35) + } + + var didSelectedIndex: ((_ index: Int) -> Void)? + + var dataArr: [String] = [] { + didSet { + self.reloadData() + } + } + + var selectedIndex: Int = 0 { + didSet { + self.buttonArr.forEach { + $0.isSelected = $0.tag == selectedIndex + if $0.isSelected { + self.updateLinePosition(to: $0, true) + } + } + } + } + + private lazy var buttonArr: [UIButton] = [] + + //MARK: UI属性 + private lazy var scrollView: FAScrollView = { + let scrollView = FAScrollView() + scrollView.showsVerticalScrollIndicator = false + scrollView.showsHorizontalScrollIndicator = false + return scrollView + }() + + private lazy var lineView: UIView = { + let view = UIView() + view.layer.cornerRadius = 2 + view.layer.masksToBounds = true + view.backgroundColor = ._35_A_4_FE + return view + }() + + override init(frame: CGRect) { + super.init(frame: frame) + fa_setupLayout() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + private func reloadData() { + buttonArr.forEach { + $0.removeFromSuperview() + } + buttonArr.removeAll() + + let count = self.dataArr.count + + var previousButton: UIButton? + + dataArr.enumerated().forEach { + let text = $1 + let normalStrig = NSMutableAttributedString(string: $1) + normalStrig.yy_color = ._999999 + normalStrig.yy_font = .font(ofSize: 16, weight: .init(900)) + + let selectedString = NSMutableAttributedString(string: $1) + selectedString.yy_color = ._35_A_4_FE + selectedString.yy_font = .font(ofSize: 16, weight: .init(900)) + + + var config = UIButton.Configuration.plain() + config.background.backgroundColor = .clear + config.contentInsets = .zero + + let button = UIButton(configuration: config) + button.tag = $0 + button.configurationUpdateHandler = { button in + let font = UIFont.font(ofSize: 16, weight: .init(900)) + + if button.isSelected { + button.configuration?.attributedTitle = AttributedString(text, attributes: AttributeContainer([ + .font : font, + .foregroundColor : UIColor._35_A_4_FE + ])) + } else { + button.configuration?.attributedTitle = AttributedString(text, attributes: AttributeContainer([ + .font : font, + .foregroundColor : UIColor._999999 + ])) + } + } + + button.addAction(UIAction(handler: { [weak self] _ in + guard let self = self else { return } + self.selectedIndex = button.tag + self.didSelectedIndex?(self.selectedIndex) + }), for: .touchUpInside) + + button.isSelected = $0 == selectedIndex + + self.scrollView.addSubview(button) + self.buttonArr.append(button) + + if previousButton == nil { + button.snp.makeConstraints { make in + make.left.equalToSuperview().offset(30) + make.top.equalToSuperview() + make.height.equalTo(35) + } + } else if let previousButton = previousButton, count - 1 == $0 { + button.snp.makeConstraints { make in + make.top.equalToSuperview() + make.left.equalTo(previousButton.snp.right).offset(40) + make.height.equalTo(35) + make.right.equalToSuperview().offset(-30) + } + } else if let previousButton = previousButton { + button.snp.makeConstraints { make in + make.top.equalToSuperview() + make.left.equalTo(previousButton.snp.right).offset(40) + make.height.equalTo(35) + } + } + + if button.isSelected { + self.updateLinePosition(to: button, false) + } + + previousButton = button + } + + } + + + + @objc private func handleButton(sender: UIButton) { + self.selectedIndex = sender.tag + self.didSelectedIndex?(self.selectedIndex) + } + + private func updateLinePosition(to button: UIButton, _ isAnimate: Bool) { + + lineView.snp.remakeConstraints { make in + make.bottom.equalTo(button) + make.width.equalTo(10) + make.height.equalTo(4) + make.centerX.equalTo(button) + } + + if isAnimate { + UIView.animate(withDuration: 0.3) { + self.layoutIfNeeded() + } + } + + } + +} + +extension FAEpMenuView { + + private func fa_setupLayout() { + addSubview(scrollView) + scrollView.addSubview(lineView) + + scrollView.snp.makeConstraints { make in + make.left.right.top.equalToSuperview() + make.bottom.equalToSuperview() + } + + + } + +} diff --git a/Fableon/Class/Player/V/FAEpSelectorCell.swift b/Fableon/Class/Player/V/FAEpSelectorCell.swift new file mode 100644 index 0000000..63fd8fa --- /dev/null +++ b/Fableon/Class/Player/V/FAEpSelectorCell.swift @@ -0,0 +1,41 @@ +// +// FAEpSelectorCell.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/29. +// + +import UIKit + +class FAEpSelectorCell: UICollectionViewCell { + + var model: FAVideoInfoModel? { + didSet { + numberLabel.text = model?.episode + } + } + + var fa_isSelected: Bool = false { + didSet { + if fa_isSelected { + numberLabel.textColor = ._35_A_4_FE + self.contentView.backgroundColor = .FFFFFF + self.contentView.layer.borderColor = UIColor._35_A_4_FE.cgColor + } else { + numberLabel.textColor = .FFFFFF.withAlphaComponent(0.8) + self.contentView.backgroundColor = .FFFFFF.withAlphaComponent(0.25) + self.contentView.layer.borderColor = UIColor.clear.cgColor + } + } + } + + @IBOutlet weak var numberLabel: UILabel! + + override func awakeFromNib() { + super.awakeFromNib() + self.layer.masksToBounds = false + self.contentView.layer.cornerRadius = 3 + self.contentView.layer.borderWidth = 1 + } + +} diff --git a/Fableon/Class/Player/V/FAEpSelectorCell.xib b/Fableon/Class/Player/V/FAEpSelectorCell.xib new file mode 100644 index 0000000..67bc00c --- /dev/null +++ b/Fableon/Class/Player/V/FAEpSelectorCell.xib @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Fableon/Class/Player/V/FAEpSelectorView.swift b/Fableon/Class/Player/V/FAEpSelectorView.swift new file mode 100644 index 0000000..63b2198 --- /dev/null +++ b/Fableon/Class/Player/V/FAEpSelectorView.swift @@ -0,0 +1,259 @@ +// +// FAEpSelectorView.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/23. +// + +import UIKit +import HWPanModal + +class FAEpSelectorView: FAPanModalContentView { + + var didSelected: ((_ index: Int) -> Void)? + + var model: FAShortDetailModel? { + didSet { + titleLabel.text = model?.shortPlayInfo?.name + + collectionView.reloadData() + + let epList = model?.episodeList ?? [] + + var menuDataArr = [String]() + let totalEpisode = epList.count + var index = 0 + var remainingEpisodes = totalEpisode + + while remainingEpisodes > 0 { + let minIndex = index * 24 + var maxIndex = minIndex + 23 + if maxIndex >= epList.count { + maxIndex = epList.count - 1 + } + + let minEpisode = epList[minIndex].episode ?? "0" + let maxEpisode = epList[maxIndex].episode ?? "0" + + if minEpisode == maxEpisode { + menuDataArr.append("\(minEpisode)") + } else { + menuDataArr.append("\(minEpisode)-\(maxEpisode)") + } + + remainingEpisodes -= 24 + index += 1 + } + + self.menuView.dataArr = menuDataArr + } + } + + var selectedIndex: Int = 0 { + didSet { + collectionView.reloadData() + } + } + + private var isDecelerating = false + private var isDragging = false + + private lazy var titleLabel: UILabel = { + let label = UILabel() + label.font = .font(ofSize: 16, weight: .medium) + label.textColor = .FFFFFF + return label + }() + + private lazy var menuView: FAEpMenuView = { + let view = FAEpMenuView() + view.didSelectedIndex = { [weak self] index in + guard let self = self else { return } + let epList = self.model?.episodeList ?? [] + var row = 0 + if index > 0 { + row = index * 24 + 10 + let count = epList.count + if row >= count { + row = count - 1 + } + } + let indexPath = IndexPath.init(row: row, section: 0) + self.collectionView.scrollToItem(at: indexPath, at: .centeredVertically, animated: true) + } + return view + }() + + private lazy var cvLayout: FAWaterfallFlowLayout = { + let layout = FAWaterfallFlowLayout() + layout.delegate = self + return layout + }() + + private lazy var collectionView: FACollectionView = { + let collectionView = FACollectionView(frame: .zero, collectionViewLayout: cvLayout) + collectionView.contentInset = .init(top: 10, left: 0, bottom: UIScreen.safeBottom + 10, right: 0) + collectionView.delegate = self + collectionView.dataSource = self + collectionView.register(UINib(nibName: "FAEpSelectorCell", bundle: nil), forCellWithReuseIdentifier: "cell") + return collectionView + }() + + + + + override init(frame: CGRect) { + super.init(frame: frame) + self.backgroundColor = .clear + self.contentHeight = 350 + UIScreen.safeBottom + + fa_setupLayout() + } + + @MainActor required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func backgroundConfig() -> HWBackgroundConfig { + let config = HWBackgroundConfig() + config.backgroundAlpha = 0.6 + return config + } + + override func layoutSubviews() { + super.layoutSubviews() + + + } + + override func present(in view: UIView?) { + super.present(in: view) + self.hw_contentView.fa_addEffectView(style: .dark) + let r = self.cornerRadius() + self.hw_contentView.fa_setRoundedCorner(topLeft: r, topRight: r, bottomLeft: 0, bottomRight: 0) + } + +} + + +extension FAEpSelectorView { + + private func fa_setupLayout() { + addSubview(titleLabel) + addSubview(menuView) + addSubview(collectionView) + + titleLabel.snp.makeConstraints { make in + make.left.equalToSuperview().offset(20) + make.right.lessThanOrEqualToSuperview().offset(-20) + make.top.equalToSuperview().offset(18) + } + + menuView.snp.makeConstraints { make in + make.left.right.equalToSuperview() + make.top.equalToSuperview().offset(55) + } + + collectionView.snp.makeConstraints { make in + make.left.right.bottom.equalToSuperview() + make.top.equalToSuperview().offset(107) + } + } + +} + +//MARK: UICollectionViewDelegate, UICollectionViewDataSource +extension FAEpSelectorView: UICollectionViewDelegate, UICollectionViewDataSource { + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! FAEpSelectorCell + cell.model = model?.episodeList?[indexPath.row] + cell.fa_isSelected = selectedIndex == indexPath.row + return cell + } + + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + model?.episodeList?.count ?? 0 + } + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + if self.selectedIndex == indexPath.row { return } + self.selectedIndex = indexPath.row + + self.didSelected?(indexPath.row) + self.dismiss(animated: true) { + + } + } + + func scrollViewDidScroll(_ scrollView: UIScrollView) { + if isDragging || isDecelerating { + updateMuneSelectedIndex() + } + } + + func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { + isDecelerating = false + updateMuneSelectedIndex() + } + + func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView) { + isDecelerating = true + } + + func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { + isDragging = true + } + + func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) { + isDragging = false + } + + func updateMuneSelectedIndex() { + let epList = model?.episodeList ?? [] + let indexPathArr = collectionView.indexPathsForVisibleItems + + var minRow = epList.count - 1 + var maxRow = 0 + + for indexPath in indexPathArr { + if indexPath.row < minRow { + minRow = indexPath.row + } + if indexPath.row > maxRow { + maxRow = indexPath.row + } + } + + let selectedIndex = maxRow / 24 + if menuView.selectedIndex != selectedIndex { + menuView.selectedIndex = selectedIndex + } + } + +} + +//MARK: FAWaterfallMutiSectionDelegate +extension FAEpSelectorView: FAWaterfallMutiSectionDelegate { + + func heightForRowAtIndexPath(collectionView collection: UICollectionView, layout: FAWaterfallFlowLayout, indexPath: IndexPath, itemWidth: CGFloat) -> CGFloat { + return 44 + } + + func columnNumber(collectionView collection: UICollectionView, layout: FAWaterfallFlowLayout, section: Int) -> Int { + return 6 + } + + func lineSpacing(collectionView collection: UICollectionView, layout: FAWaterfallFlowLayout, section: Int) -> CGFloat { + return 15 + } + + func interitemSpacing(collectionView collection: UICollectionView, layout: FAWaterfallFlowLayout, section: Int) -> CGFloat { + return 15 + } + + func insetForSection(collectionView collection: UICollectionView, layout: FAWaterfallFlowLayout, section: Int) -> UIEdgeInsets { + return .init(top: 0, left: 20, bottom: 0, right: 20) + } + +} diff --git a/Fableon/Class/Player/V/FAPlayerDetailCell.swift b/Fableon/Class/Player/V/FAPlayerDetailCell.swift new file mode 100644 index 0000000..4fb60d5 --- /dev/null +++ b/Fableon/Class/Player/V/FAPlayerDetailCell.swift @@ -0,0 +1,42 @@ +// +// FAPlayerDetailCell.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/1. +// + +import UIKit +import JXPlayer + +class FAPlayerDetailCell: JXPlayerListCell { + + override var ControlViewClass: JXPlayerListControlView.Type { + return FAPlayerDetailControlView.self + } + + + override var model: Any? { + didSet { + let model = self.model as? FAVideoInfoModel + self.player.setPlayUrl(url: model?.video_url ?? "") + } + } + + var shortModel: FAShortPlayModel? { + didSet { + let controlView = self.controlView as? FAPlayerDetailControlView + controlView?.shortModel = shortModel + } + } + + override init(frame: CGRect) { + super.init(frame: frame) + + } + + @MainActor required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + +} diff --git a/Fableon/Class/Player/V/FAPlayerDetailControlView.swift b/Fableon/Class/Player/V/FAPlayerDetailControlView.swift new file mode 100644 index 0000000..21bf133 --- /dev/null +++ b/Fableon/Class/Player/V/FAPlayerDetailControlView.swift @@ -0,0 +1,235 @@ +// +// FAPlayerDetailControlView.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/16. +// + +import UIKit +import JXPlayer +import SwiftUI + +class FAPlayerDetailControlView: JXPlayerListControlView { + + + override var viewModel: JXPlayerListViewModel? { + didSet { + self.viewModel?.addObserver(self, forKeyPath: "isPlaying", context: nil) + } + } + + var fa_viewModel: FAShortDetailViewModel? { + return self.viewModel as? FAShortDetailViewModel + } + + override var model: Any? { + didSet { +// let model = self.model as? FAVideoInfoModel + + updateEp() + } + } + + var shortModel: FAShortPlayModel? { + didSet { + updateEp() + shortNameLabel.text = shortModel?.name + textLabel.text = shortModel?.fa_description + + collectButton.isSelected = shortModel?.is_collect == true + } + } + + override var durationTime: TimeInterval { + didSet { + updateProgress() + } + } + + override var currentTime: TimeInterval { + didSet { + updateProgress() + } + } + + override var isCurrent: Bool { + didSet { + playButton.setNeedsUpdateConfiguration() + } + } + + private lazy var epButton: UIHostingController = { + let view = FAPlayerEpUIButton() + let hc = UIHostingController(rootView: view) + hc.view.backgroundColor = .clear + return hc + }() + + private lazy var progressView: FAPlayerProgressView = { + let view = FAPlayerProgressView() + view.insets = .init(top: 10, left: 16, bottom: 10, right: 16) + view.panFinish = { [weak self] progress in + guard let self = self else { return } + self.viewModel?.seekTo(Float(progress)) + } + return view + }() + + private lazy var textLabel: UILabel = { + let label = UILabel() + label.font = .font(ofSize: 12, weight: .regular); + label.textColor = UIColor(named: .color_FFFFFF)!.withAlphaComponent(0.8) + label.numberOfLines = 2 + return label + }() + + private lazy var shortNameLabel: UILabel = { + let label = UILabel() + label.font = .font(ofSize: 16, weight: .medium) + label.textColor = UIColor(named: .color_FFFFFF) + return label + }() + + private lazy var playButton: UIButton = { + let config = UIButton.Configuration.plain() + + let button = UIButton(configuration: config, primaryAction: UIAction(handler: { [weak self] _ in + self?.fa_viewModel?.userSwitchPlayAndPause() + })) + button.configurationUpdateHandler = { [weak self] button in + guard let self = self else { return } + + if self.viewModel?.isPlaying == true || !isCurrent { + button.configuration?.image = UIImage(named: "pause_icon") + } else { + button.configuration?.image = UIImage(named: "play_icon_01") + } + } + return button + }() + + private lazy var collectButton: UIButton = { + var config = UIButton.Configuration.plain() + config.background.backgroundColor = .clear + let button = UIButton(configuration: config) + button.configurationUpdateHandler = { [weak self] button in + guard let self = self else { return } + if button.isSelected { + button.configuration?.image = UIImage(named: "collect_star_icon_selected") + } else { + button.configuration?.image = UIImage(named: "collect_star_icon") + } + } + button.addAction(UIAction(handler: { [weak self] _ in + guard let self = self else { return } + guard let shortPlayId = self.shortModel?.short_play_id else { return } + let videoId = (self.model as? FAVideoInfoModel)?.short_play_video_id + let isCollect = !(self.shortModel?.is_collect ?? false) + + FAAPI.requestShortCollect(isCollect: isCollect, shortPlayId: shortPlayId, videoId: videoId, success: nil) + + }), for: .touchUpInside) + + return button + }() + + deinit { + NotificationCenter.default.removeObserver(self) + } + + override init(frame: CGRect) { + super.init(frame: frame) + NotificationCenter.default.addObserver(self, selector: #selector(updateShortCollectStateNotification), name: FAAPI.updateShortCollectStateNotification, object: nil) + + fa_setupLayout() + } + + @MainActor required init?(coder: NSCoder) { + super.init(coder: coder) + } + + override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { + if keyPath == "isPlaying" { + playButton.setNeedsUpdateConfiguration() + } + } + + private func updateEp() { + let model = self.model as? FAVideoInfoModel + + let text = "Ep.##".localizedReplace(text: model?.episode ?? "") + "/" + "Ep.##".localizedReplace(text: "\(shortModel?.episode_total ?? 0)") + var view = FAPlayerEpUIButton(text: text) + view.clickHandle = { [weak self] in + self?.fa_viewModel?.onEpSelectorView() + } + epButton.rootView = view + } + + private func updateProgress() { + guard durationTime > 0 else { + progressView.progress = 0 + return + } + progressView.progress = currentTime / durationTime + } + + @objc private func updateShortCollectStateNotification(sender: Notification) { + guard let userInfo = sender.userInfo else { return } + guard let shortPlayId = userInfo["id"] as? String else { return } + guard let state = userInfo["state"] as? Bool else { return } + guard shortPlayId == self.shortModel?.short_play_id else { return } + self.shortModel?.is_collect = state + + collectButton.isSelected = state + } +} + +extension FAPlayerDetailControlView { + + private func fa_setupLayout() { + + addSubview(epButton.view) + addSubview(progressView) + addSubview(textLabel) + addSubview(shortNameLabel) + addSubview(playButton) + addSubview(collectButton) + + + epButton.view.snp.makeConstraints { make in + make.left.equalToSuperview().offset(16) + make.centerX.equalToSuperview() + make.bottom.equalToSuperview().offset(-(UIScreen.safeBottom + 10)) + } + + progressView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.centerX.equalToSuperview() + make.bottom.equalTo(epButton.view.snp.top).offset(-8) + } + + textLabel.snp.makeConstraints { make in + make.left.equalToSuperview().offset(16) + make.right.lessThanOrEqualToSuperview().offset(-84) + make.bottom.equalTo(progressView.snp.top).offset(1) + } + + shortNameLabel.snp.makeConstraints { make in + make.left.equalToSuperview().offset(16) + make.bottom.equalTo(textLabel.snp.top).offset(-5) + make.right.lessThanOrEqualToSuperview().offset(-84) + } + + playButton.snp.makeConstraints { make in + make.center.equalToSuperview() + } + + collectButton.snp.makeConstraints { make in + make.top.equalToSuperview().offset(UIScreen.safeTop) + make.right.equalToSuperview().offset(-16) + make.height.equalTo(44) + } + + } + +} diff --git a/Fableon/Class/Player/V/FAPlayerProgressView.swift b/Fableon/Class/Player/V/FAPlayerProgressView.swift new file mode 100644 index 0000000..372fdad --- /dev/null +++ b/Fableon/Class/Player/V/FAPlayerProgressView.swift @@ -0,0 +1,211 @@ +// +// FAPlayerProgressView.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/23. +// + +import UIKit +import YYText + +class FAPlayerProgressView: UIView { + + ///滑动开始 + var panStart: (() -> Void)? + + ///滑动中 + var panChange: ((_ progress: CGFloat) -> Void)? + + ///滑动完成回调 + var panFinish: ((_ progress: CGFloat) -> Void)? + + var progress: CGFloat = 0 { + didSet { + if !isPaning { + setNeedsDisplay() + } + } + } + + ///用来记录滑动时的当前进度 + private var tempProgress: CGFloat = 0 + + ///滑动进度 + private var panProgress: CGFloat = 0 + + var progressColor = UIColor(named: .color_FFFFFF)!.withAlphaComponent(0.2) + var currentProgress = UIColor(named: .color_FFFFFF)! + + var lineWidth: CGFloat = 3 + + ///加载中状态 + var isLoading = false { + didSet { + if isLoading { + if gradientTimer == nil { + gradientTimer = Timer.scheduledTimer(timeInterval: 0.05, target: YYTextWeakProxy(target: self), selector: #selector(handleGradientTimer), userInfo: nil, repeats: true) + } + } else { + gradientTimer?.invalidate() + gradientTimer = nil + } + } + } + + var insets: UIEdgeInsets = .init(top: 0, left: 16, bottom: 0, right: 16) { + didSet { + self.invalidateIntrinsicContentSize() + setNeedsDisplay() + } + } + + private(set) lazy var panGesture: UIPanGestureRecognizer = { + let pan = UIPanGestureRecognizer(target: self, action: #selector(handlePanGesture(sender:))) + return pan + }() + + private(set) lazy var tagGesture: UITapGestureRecognizer = { + let tap = UITapGestureRecognizer(target: self, action: #selector(handleTapGesture(sender:))) + return tap + }() + + ///是否在滑动中 + private var isPaning: Bool = false + + private var gradientTimer: Timer? + + private var gradientValue: CGFloat = 0 + + override var intrinsicContentSize: CGSize { + return .init(width: UIScreen.width, height: lineWidth + insets.top + insets.bottom) + } + + override init(frame: CGRect) { + super.init(frame: frame) +// self.backgroundColor = progressColor + self.backgroundColor = .clear + + self.addGestureRecognizer(panGesture) + self.addGestureRecognizer(tagGesture) + + + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + + override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { + super.traitCollectionDidChange(previousTraitCollection) + setNeedsDisplay() + } + + @objc private func handleGradientTimer() { + gradientValue += 0.1 + if gradientValue > 1 { + gradientValue = 0 + } + setNeedsDisplay() + } + + override func draw(_ rect: CGRect) { + super.draw(rect) + guard let context = UIGraphicsGetCurrentContext() else { return } + let width = rect.width + + let progressX = insets.left + let progressY = insets.top + let progressWidth = width - insets.left - insets.right + + if isLoading, !isPaning { + // 定义颜色空间 + let colorSpace = CGColorSpaceCreateDeviceRGB() + let colors: [CGColor] = [ + UIColor.clear.cgColor, + UIColor.white.cgColor, + UIColor.clear.cgColor + ] + let locations: [CGFloat] = [0.0, gradientValue, 1.0] + + guard let gradient = CGGradient(colorsSpace: colorSpace, colors: colors as CFArray, locations: locations) else { + return + } + + let gradientRect = CGRect(x: progressX, + y: progressY, + width: progressWidth, + height: lineWidth) + + // 定义渐变的起点和终点 + let startPoint = CGPoint(x: rect.minX, y: rect.minY) + let endPoint = CGPoint(x: rect.maxX, y: rect.maxY) + + // 裁剪到渐变区域 + context.saveGState() + context.clip(to: gradientRect) + + // 绘制渐变 + context.drawLinearGradient(gradient, start: startPoint, end: endPoint, options: []) + } else { + var progress = self.progress + if self.isPaning { + progress = self.panProgress + } + + + ///绘制进度 + let progressPath = UIBezierPath(roundedRect: CGRect(x: progressX, y: progressY, width: progressWidth, height: lineWidth), cornerRadius: lineWidth / 2) + context.addPath(progressPath.cgPath) + context.setFillColor(progressColor.cgColor) + context.fillPath() + + ///绘制当前进度 + let currentPath = UIBezierPath(roundedRect: CGRect(x: progressX, y: progressY, width: progressWidth * progress, height: lineWidth), cornerRadius: lineWidth / 2) + context.addPath(currentPath.cgPath) + context.setFillColor(currentProgress.cgColor) + context.fillPath() + } + + + } + +} + + +extension FAPlayerProgressView { + + @objc func handlePanGesture(sender: UIPanGestureRecognizer) { + + switch sender.state { + case .began: + self.isPaning = true + self.tempProgress = self.progress + sender.setTranslation(CGPoint(x: 0, y: 0), in: self) + self.panStart?() + + case .changed: + let point = sender.translation(in: self) + let offsetX = point.x / (self.width - self.insets.left - self.insets.right) + self.panProgress = self.tempProgress + offsetX + if self.panProgress < 0 { + self.panProgress = 0 + } + self.panChange?(self.panProgress) + setNeedsDisplay() + + default: + self.isPaning = false + self.panFinish?(self.panProgress) + + self.panProgress = 0 + } + } + + @objc func handleTapGesture(sender: UITapGestureRecognizer) { + let point = sender.location(in: self) + let offsetX = (point.x - self.insets.left) / (self.width - self.insets.left - self.insets.right) + self.panFinish?(offsetX) + } + +} diff --git a/Fableon/Class/Player/VC/FAPlayerDetailViewController.swift b/Fableon/Class/Player/VC/FAPlayerDetailViewController.swift new file mode 100644 index 0000000..7a1d05f --- /dev/null +++ b/Fableon/Class/Player/VC/FAPlayerDetailViewController.swift @@ -0,0 +1,150 @@ +// +// FAPlayerDetailViewController.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/1. +// + +import UIKit +import JXPlayer +import FDFullscreenPopGesture + + +class FAPlayerDetailViewController: JXPlayerListViewController { + + var shortPlayId: String? + + override var ViewModelClass: JXPlayerListViewModel.Type { + return FAShortDetailViewModel.self + } + + var fa_viewModel: FAShortDetailViewModel { + return self.viewModel as! FAShortDetailViewModel + } + + private lazy var returnButton: UIButton = { + let button = UIButton(type: .custom) + button.setImage(UIImage(named: "Frame 3011"), for: .normal) + button.addAction(UIAction(handler: { [weak self] _ in + self?.navigationController?.popViewController(animated: true) + }), for: .touchUpInside) + return button + }() + + private lazy var epLabel: UILabel = { + let label = UILabel() + label.font = .font(ofSize: 18, weight: .regular) + label.textColor = .init(named: .color_FFFFFF) + return label + }() + + + override func viewDidLoad() { + super.viewDidLoad() + self.fd_interactivePopDisabled = true + view.backgroundColor = .init(named: .color_000000) + self.fa_viewModel.shortPlayId = shortPlayId ?? "" + self.register(FAPlayerDetailCell.self, forCellWithReuseIdentifier: "FAPlayerDetailCell") + self.delegate = self + self.dataSource = self + + + requestDetailList() + + fa_setupLayout() + } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + self.navigationController?.setNavigationBarHidden(true, animated: true) + } + + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + } + + override func viewDidDisappear(_ animated: Bool) { + super.viewDidDisappear(animated) + self.viewModel.currentCell?.pause() + } + + override var previousVideoUrl: String? { + return self.fa_viewModel.previousEpisode?.video_url + } + + override var nextVideoUrl: String? { + return self.fa_viewModel.nextEpisode?.video_url + } + + override func play() { + super.play() + + let videoInfo = self.viewModel.currentCell?.model as? FAVideoInfoModel + FAAPI.requestCreatePlayHistory(videoId: videoInfo?.short_play_video_id, shortPlayId: videoInfo?.short_play_id) + } +} + +extension FAPlayerDetailViewController { + + private func fa_setupLayout() { + view.addSubview(returnButton) + view.addSubview(epLabel) + + returnButton.snp.makeConstraints { make in + make.left.equalToSuperview().offset(16) + make.top.equalToSuperview().offset(UIScreen.safeTop) + make.height.equalTo(44) + } + + epLabel.snp.makeConstraints { make in + make.centerY.equalTo(returnButton) + make.left.equalTo(returnButton.snp.right).offset(4) + } + } + +} + +//MARK: JXPlayerListViewControllerDelegate JXPlayerListViewControllerDataSource +extension FAPlayerDetailViewController: JXPlayerListViewControllerDelegate, JXPlayerListViewControllerDataSource { + func jx_playerListViewController(_ viewController: JXPlayerListViewController, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell = self.dequeueReusableCell(withReuseIdentifier: "FAPlayerDetailCell", for: indexPath) as! FAPlayerDetailCell + cell.model = self.fa_viewModel.dataArr[indexPath.section].episodeList?[indexPath.row] + cell.shortModel = self.fa_viewModel.dataArr[indexPath.section].shortPlayInfo + return cell + } + + func jx_playerListViewController(_ viewController: JXPlayerListViewController, numberOfItemsInSection section: Int) -> Int { + self.fa_viewModel.dataArr[section].episodeList?.count ?? 0 + } + + func jx_numberOfSections(in viewController: JXPlayerListViewController) -> Int { + self.fa_viewModel.dataArr.count + } + + func jx_playerListViewController(_ viewController: JXPlayerListViewController, didChangeIndexPathForVisible indexPath: IndexPath) { + let model = self.fa_viewModel.dataArr[indexPath.section].episodeList?[indexPath.row] + epLabel.text = "Ep.\(model?.episode ?? "")" + } + + func jx_shouldAutoScrollNextEpisode(_ viewController: JXPlayerListViewController) -> Bool { + if let _ = self.fa_viewModel.popView { + return false + } else { + return true + } + } + +} + + +extension FAPlayerDetailViewController { + + private func requestDetailList() { + self.fa_viewModel.requestDetailData { [weak self] code in + guard let self = self else { return } + + + } + } +} + diff --git a/Fableon/Class/Player/VM/FAShortDetailViewModel.swift b/Fableon/Class/Player/VM/FAShortDetailViewModel.swift new file mode 100644 index 0000000..0273f5e --- /dev/null +++ b/Fableon/Class/Player/VM/FAShortDetailViewModel.swift @@ -0,0 +1,72 @@ +// +// Untitled.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/8/29. +// + +import SwiftUI +import JXPlayer + +//@MainActor +class FAShortDetailViewModel: JXPlayerListViewModel, ObservableObject { + + private(set) var dataArr: [FAShortDetailModel] = [] + + var shortPlayId: String = "" + + + + var previousEpisode: FAVideoInfoModel? { + guard dataArr.count > 0 else { return nil } + let detailModel = dataArr[self.currentIndexPath.section] + let row = self.currentIndexPath.row - 1 + if row < 0 { return nil } + return detailModel.episodeList?[row] + } + + var nextEpisode: FAVideoInfoModel? { + guard dataArr.count > 0 else { return nil } + let detailModel = dataArr[self.currentIndexPath.section] + let row = self.currentIndexPath.row + 1 + if row >= (detailModel.episodeList?.count ?? 0) { return nil } + + return detailModel.episodeList?[row] + } + + weak var popView: UIView? + + + func requestDetailData(completer: ((_ code: Int) -> Void)?) { + FAAPI.requestShortDetailData(shortPlayId: shortPlayId) { [weak self] model, code, msg in + guard let self = self else { return } + if let model = model { + self.dataArr.removeAll() + self.dataArr.append(model) + self.playerListVC?.reloadData { + self.playerListVC?.play() + } + } + completer?(code ?? -1) + } + } + +} + +extension FAShortDetailViewModel { + + func onEpSelectorView() { + let view = FAEpSelectorView() + view.selectedIndex = self.currentIndexPath.row + view.model = self.dataArr[currentIndexPath.section] + view.didSelected = { [weak self] index in + guard let self = self else { return } + self.playerListVC?.scrollToItem(indexPath: IndexPath(row: index, section: currentIndexPath.section), animated: false) + } + view.present(in: nil) + + self.popView = view + } + + +} diff --git a/Fableon/Class/Recommend/C/FARecommendViewController.swift b/Fableon/Class/Recommend/C/FARecommendViewController.swift new file mode 100644 index 0000000..6edd85b --- /dev/null +++ b/Fableon/Class/Recommend/C/FARecommendViewController.swift @@ -0,0 +1,73 @@ +// +// FARecommendViewController.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/30. +// + +import UIKit +import JXPlayer + +class FARecommendViewController: JXPlayerListViewController { + + override var contentSize: CGSize { + return .init(width: UIScreen.width, height: UIScreen.height - UIScreen.tabBarHeight) + } + + override var ViewModelClass: JXPlayerListViewModel.Type { + return FARecommendViewModel.self + } + + var fa_viewModel: FARecommendViewModel { + return self.viewModel as! FARecommendViewModel + } + + override func viewDidLoad() { + super.viewDidLoad() + self.register(FARecommendPlayerCell.self, forCellWithReuseIdentifier: "cell") + + self.delegate = self + self.dataSource = self + + self.fa_viewModel.requestDataArr(page: 1) + + } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + self.navigationController?.setNavigationBarHidden(true, animated: true) + } + + override func viewDidDisappear(_ animated: Bool) { + super.viewDidDisappear(animated) + self.viewModel.currentCell?.pause() + } + + override var previousVideoUrl: String? { + return self.fa_viewModel.previousEpisode?.video_url + } + + override var nextVideoUrl: String? { + return self.fa_viewModel.nextEpisode?.video_url + } + +} + +//MARK: JXPlayerListViewControllerDataSource +extension FARecommendViewController: JXPlayerListViewControllerDataSource { + func jx_playerListViewController(_ viewController: JXPlayerListViewController, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell = self.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! FARecommendPlayerCell + cell.model = fa_viewModel.dataArr[indexPath.row] + return cell + } + + func jx_playerListViewController(_ viewController: JXPlayerListViewController, numberOfItemsInSection section: Int) -> Int { + return fa_viewModel.dataArr.count + } + +} + +//MARK: JXPlayerListViewControllerDelegate +extension FARecommendViewController: JXPlayerListViewControllerDelegate { + +} diff --git a/Fableon/Class/Recommend/V/FARecommendPlayerCell.swift b/Fableon/Class/Recommend/V/FARecommendPlayerCell.swift new file mode 100644 index 0000000..cc89048 --- /dev/null +++ b/Fableon/Class/Recommend/V/FARecommendPlayerCell.swift @@ -0,0 +1,35 @@ +// +// FARecommendPlayerCell.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/30. +// + +import UIKit +import JXPlayer + +class FARecommendPlayerCell: JXPlayerListCell { + + override var ControlViewClass: JXPlayerListControlView.Type { + return FARecommendPlayerControlView.self + } + + + override var model: Any? { + didSet { + let model = self.model as? FAShortPlayModel + let videoInfo = model?.video_info + + self.player.setPlayUrl(url: videoInfo?.video_url ?? "") + } + } + + override init(frame: CGRect) { + super.init(frame: frame) + + } + + @MainActor required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} diff --git a/Fableon/Class/Recommend/V/FARecommendPlayerControlView.swift b/Fableon/Class/Recommend/V/FARecommendPlayerControlView.swift new file mode 100644 index 0000000..95fc5be --- /dev/null +++ b/Fableon/Class/Recommend/V/FARecommendPlayerControlView.swift @@ -0,0 +1,237 @@ +// +// FARecommendPlayerControlView.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/9. +// + +import UIKit +import JXPlayer +import SwiftUI + +class FARecommendPlayerControlView: JXPlayerListControlView { + + override var viewModel: JXPlayerListViewModel? { + didSet { + self.viewModel?.addObserver(self, forKeyPath: "isPlaying", context: nil) + } + } + + var fa_viewModel: FARecommendViewModel? { + return self.viewModel as? FARecommendViewModel + } + + override var model: Any? { + didSet { + let shortModel = self.model as? FAShortPlayModel +// let videoInfo = shortModel?.video_info + + updateEp() + shortNameLabel.text = shortModel?.name + textLabel.text = shortModel?.fa_description + + collectButton.isSelected = shortModel?.is_collect == true + + } + } + + var shortModel: FAShortPlayModel? { + return self.model as? FAShortPlayModel + } + + override var durationTime: TimeInterval { + didSet { + updateProgress() + } + } + + override var currentTime: TimeInterval { + didSet { + updateProgress() + } + } + + override var isCurrent: Bool { + didSet { + playButton.setNeedsUpdateConfiguration() + } + } + + private lazy var epButton: UIHostingController = { + let view = FAPlayerEpUIButton() + let hc = UIHostingController(rootView: view) + hc.view.backgroundColor = .clear + return hc + }() + + private lazy var progressView: FAPlayerProgressView = { + let view = FAPlayerProgressView() + view.insets = .init(top: 10, left: 16, bottom: 10, right: 16) + view.panFinish = { [weak self] progress in + guard let self = self else { return } + self.viewModel?.seekTo(Float(progress)) + } + return view + }() + + private lazy var textLabel: UILabel = { + let label = UILabel() + label.font = .font(ofSize: 12, weight: .regular); + label.textColor = UIColor(named: .color_FFFFFF)!.withAlphaComponent(0.8) + label.numberOfLines = 2 + return label + }() + + private lazy var shortNameLabel: UILabel = { + let label = UILabel() + label.font = .font(ofSize: 16, weight: .medium) + label.textColor = UIColor(named: .color_FFFFFF) + return label + }() + + private lazy var playButton: UIButton = { + let config = UIButton.Configuration.plain() + + let button = UIButton(configuration: config, primaryAction: UIAction(handler: { [weak self] _ in + self?.fa_viewModel?.userSwitchPlayAndPause() + })) + button.configurationUpdateHandler = { [weak self] button in + guard let self = self else { return } + + if self.viewModel?.isPlaying == true || !isCurrent { + button.configuration?.image = UIImage(named: "pause_icon") + } else { + button.configuration?.image = UIImage(named: "play_icon_01") + } + } + return button + }() + + private lazy var collectButton: UIButton = { + var config = UIButton.Configuration.plain() + config.background.backgroundColor = .clear + let button = UIButton(configuration: config) + button.configurationUpdateHandler = { [weak self] button in + guard let self = self else { return } + if button.isSelected { + button.configuration?.image = UIImage(named: "collect_star_icon_selected") + } else { + button.configuration?.image = UIImage(named: "collect_star_icon") + } + } + button.addAction(UIAction(handler: { [weak self] _ in + guard let self = self else { return } + guard let shortPlayId = self.shortModel?.short_play_id else { return } + let videoId = (self.model as? FAVideoInfoModel)?.short_play_video_id + let isCollect = !(self.shortModel?.is_collect ?? false) + + FAAPI.requestShortCollect(isCollect: isCollect, shortPlayId: shortPlayId, videoId: videoId, success: nil) + + }), for: .touchUpInside) + + return button + }() + + deinit { + NotificationCenter.default.removeObserver(self) + } + + override init(frame: CGRect) { + super.init(frame: frame) + NotificationCenter.default.addObserver(self, selector: #selector(updateShortCollectStateNotification), name: FAAPI.updateShortCollectStateNotification, object: nil) + + fa_setupLayout() + } + + @MainActor required init?(coder: NSCoder) { + super.init(coder: coder) + } + + override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { + if keyPath == "isPlaying" { + playButton.setNeedsUpdateConfiguration() + } + } + + private func updateEp() { +// let model = self.model as? FAVideoInfoModel + let model = self.model as? FAShortPlayModel + let videoInfo = model?.video_info + + + let text = "Ep.##".localizedReplace(text: videoInfo?.episode ?? "") + "/" + "Ep.##".localizedReplace(text: "\(model?.episode_total ?? 0)") + var view = FAPlayerEpUIButton(text: text) + view.clickHandle = { [weak self] in + self?.fa_viewModel?.pushPlayerDetail(self?.shortModel) + } + epButton.rootView = view + } + + private func updateProgress() { + guard durationTime > 0 else { + progressView.progress = 0 + return + } + progressView.progress = currentTime / durationTime + } + + @objc private func updateShortCollectStateNotification(sender: Notification) { + guard let userInfo = sender.userInfo else { return } + guard let shortPlayId = userInfo["id"] as? String else { return } + guard let state = userInfo["state"] as? Bool else { return } + guard shortPlayId == self.shortModel?.short_play_id else { return } + self.shortModel?.is_collect = state + + collectButton.isSelected = state + } + +} + +extension FARecommendPlayerControlView { + + private func fa_setupLayout() { + + addSubview(epButton.view) + addSubview(progressView) + addSubview(textLabel) + addSubview(shortNameLabel) + addSubview(playButton) + addSubview(collectButton) + + + epButton.view.snp.makeConstraints { make in + make.left.equalToSuperview().offset(16) + make.centerX.equalToSuperview() + make.bottom.equalToSuperview().offset(-10) + } + + progressView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.centerX.equalToSuperview() + make.bottom.equalTo(epButton.view.snp.top).offset(-8) + } + + textLabel.snp.makeConstraints { make in + make.left.equalToSuperview().offset(16) + make.right.lessThanOrEqualToSuperview().offset(-84) + make.bottom.equalTo(progressView.snp.top).offset(1) + } + + shortNameLabel.snp.makeConstraints { make in + make.left.equalToSuperview().offset(16) + make.bottom.equalTo(textLabel.snp.top).offset(-5) + make.right.lessThanOrEqualToSuperview().offset(-84) + } + + playButton.snp.makeConstraints { make in + make.center.equalToSuperview() + } + + collectButton.snp.makeConstraints { make in + make.top.equalToSuperview().offset(UIScreen.safeTop) + make.right.equalToSuperview().offset(-16) + make.height.equalTo(44) + } + + } +} diff --git a/Fableon/Class/Recommend/VM/FARecommendViewModel.swift b/Fableon/Class/Recommend/VM/FARecommendViewModel.swift new file mode 100644 index 0000000..33b0dda --- /dev/null +++ b/Fableon/Class/Recommend/VM/FARecommendViewModel.swift @@ -0,0 +1,84 @@ +// +// FARecommendViewModel.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/30. +// + +import UIKit +import JXPlayer + +class FARecommendViewModel: JXPlayerListViewModel { + + private(set) var dataArr: [FAShortPlayModel] = [] + + + + var previousEpisode: FAVideoInfoModel? { + guard dataArr.count > 0 else { return nil } + let row = self.currentIndexPath.row - 1 + if row < 0 { return nil } + return dataArr[row].video_info + } + + var nextEpisode: FAVideoInfoModel? { + guard dataArr.count > 0 else { return nil } + let row = self.currentIndexPath.row + 1 + if row >= dataArr.count { return nil } + return dataArr[row].video_info + } + + private func addDataArr(dataArr: [FAShortPlayModel]) { + guard dataArr.count > 0 else { return } + + var indexPaths: [IndexPath] = [] + var startRow = self.dataArr.count + + dataArr.forEach { _ in + indexPaths.append(IndexPath(row: startRow, section: 0)) + startRow += 1 + } + self.dataArr += dataArr + + CATransaction.setCompletionBlock(nil) + CATransaction.begin() + self.playerListVC?.collectionView.insertItems(at: indexPaths) + CATransaction.commit() + } + + func pushPlayerDetail(_ model: FAShortPlayModel?) { + guard let model = model else { return } + + let vc = FAPlayerDetailViewController() + vc.shortPlayId = model.short_play_id + FATool.topViewController?.navigationController?.pushViewController(vc, animated: true) + } +} + + +extension FARecommendViewModel { + + + + func requestDataArr(page: Int, completer: (() -> Void)? = nil) { + + FAAPI.requestRecommendVideo(page: page) { [weak self] listModel in + guard let self = self else { return } + if let listModel = listModel, let list = listModel.list { + if page == 1 { + self.playerListVC?.clearData() + self.dataArr = list + self.playerListVC?.reloadData { [weak self] in + + self?.playerListVC?.scrollToItem(indexPath: .init(row: 0, section: 0), animated: false) + } + } else { + self.addDataArr(dataArr: list) + } +// self.pagination = listModel.pagination + } + completer?() + } + } + +} diff --git a/Fableon/Libs/Empty/FAEmpty.swift b/Fableon/Libs/Empty/FAEmpty.swift new file mode 100644 index 0000000..4362301 --- /dev/null +++ b/Fableon/Libs/Empty/FAEmpty.swift @@ -0,0 +1,27 @@ +// +// FAEmpty.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/14. +// + +import UIKit +import LYEmptyView + + +struct FAEmpty { + + static func fa_emptyView(image: UIImage?, title: String?) -> LYEmptyView { + + let view = LYEmptyView.emptyActionView(with: image, titleStr: title, detailStr: nil, btnTitleStr: nil) { +// btnClickBlock?() + } + + view?.titleLabFont = .font(ofSize: 14, weight: .medium) + view?.titleLabTextColor = .FFFFFF + view?.contentViewOffset = -100 + view?.subViewMargin = 25 + return view! + + } +} diff --git a/Fableon/Libs/FADeviceId/FADeviceIDManager.swift b/Fableon/Libs/FADeviceId/FADeviceIDManager.swift new file mode 100644 index 0000000..3cf00cd --- /dev/null +++ b/Fableon/Libs/FADeviceId/FADeviceIDManager.swift @@ -0,0 +1,26 @@ +// +// FADeviceIDManager.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/15. +// + +import Foundation +import UIKit + +class FADeviceIDManager { + static let shared = FADeviceIDManager() + private let key = "com.fableon.uniqueDeviceID" + + private init() {} + + lazy var id: String = { + if let savedID = FAKeychainHelper.shared.read(key: key) { + return savedID + } else { + let newID = UIDevice.current.identifierForVendor?.uuidString ?? UUID().uuidString + FAKeychainHelper.shared.save(key: key, value: newID) + return newID + } + }() +} diff --git a/Fableon/Libs/FADeviceId/FAKeychainHelper.swift b/Fableon/Libs/FADeviceId/FAKeychainHelper.swift new file mode 100644 index 0000000..31a5586 --- /dev/null +++ b/Fableon/Libs/FADeviceId/FAKeychainHelper.swift @@ -0,0 +1,62 @@ +// +// FAKeychainHelper.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/15. +// + +import UIKit +import Security + +class FAKeychainHelper { + + static let shared = FAKeychainHelper() + private init() {} + + func save(key: String, value: String) { + if let data = value.data(using: .utf8) { + + // 先删除旧的 + let query = [ + kSecClass: kSecClassGenericPassword, + kSecAttrAccount: key + ] as CFDictionary + SecItemDelete(query) + + // 再保存新的 + let attributes = [ + kSecClass: kSecClassGenericPassword, + kSecAttrAccount: key, + kSecValueData: data, + kSecAttrAccessible: kSecAttrAccessibleAfterFirstUnlock + ] as CFDictionary + + SecItemAdd(attributes, nil) + } + } + + func read(key: String) -> String? { + let query = [ + kSecClass: kSecClassGenericPassword, + kSecAttrAccount: key, + kSecReturnData: kCFBooleanTrue!, + kSecMatchLimit: kSecMatchLimitOne + ] as CFDictionary + + var dataTypeRef: AnyObject? + let status = SecItemCopyMatching(query, &dataTypeRef) + + if status == errSecSuccess, let data = dataTypeRef as? Data { + return String(data: data, encoding: .utf8) + } + return nil + } + + func delete(key: String) { + let query = [ + kSecClass: kSecClassGenericPassword, + kSecAttrAccount: key + ] as CFDictionary + SecItemDelete(query) + } +} diff --git a/Fableon/Libs/FALocalized/FALocalized.swift b/Fableon/Libs/FALocalized/FALocalized.swift new file mode 100644 index 0000000..ec6729b --- /dev/null +++ b/Fableon/Libs/FALocalized/FALocalized.swift @@ -0,0 +1,110 @@ +// +// FALocalized.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/15. +// + + +import UIKit + + +class FALocalized { + + static let manager = FALocalized() + + private let LocalizedUserDefaultsKey = "FALocalized.LocalizedUserDefaultsKey" + private let LocalizedDataUserDefaultsKey = "FALocalized.LocalizedDataUserDefaultsKey" + private let LocalizedDataLocalizedKeyUserDefaultsKey = "FALocalized.LocalizedDataLocalizedKeyUserDefaultsKey" + + + ///多语言数据 + private(set) lazy var localizedData: [String : String]? = UserDefaults.standard.object(forKey: LocalizedDataUserDefaultsKey) as? [String : String] + { + didSet { + UserDefaults.standard.set(localizedData, forKey: LocalizedDataUserDefaultsKey) + UserDefaults.standard.synchronize() + } + } + ///当前语言数据对应的key + private(set) lazy var localizedDataLocalizedKey: String? = UserDefaults.standard.object(forKey: LocalizedDataLocalizedKeyUserDefaultsKey) as? String + { + didSet { + UserDefaults.standard.set(localizedDataLocalizedKey, forKey: LocalizedDataLocalizedKeyUserDefaultsKey) + UserDefaults.standard.synchronize() + } + } + + // 获取当前语言代码(如果用户未手动设置,则返回系统语言) + var currentLocalizedKey: String { + get { + return "en" +// var key = UserDefaults.standard.string(forKey: LocalizedUserDefaultsKey) ?? Locale.preferredLanguages.first +// +// if key?.contains("zh-Hans") == true { +// key = "zh" +// } else if key?.contains("zh-Hant") == true { +// key = "zh_hk" +// } else { +// let arr = key?.components(separatedBy: "-") +// key = arr?.first +// } +// return key ?? "en" + } + set { + UserDefaults.standard.set(newValue, forKey: LocalizedUserDefaultsKey) + UserDefaults.standard.synchronize() + } + } + + var mjLocalizedKey: String { + let key = currentLocalizedKey + if key == "zh" { + return "zh-Hans" + } else if key == "zh_hk" { + return "zh-Hant" + } + return key + } + + // 判断是否跟随系统 + var isFollowingSystem: Bool { + return UserDefaults.standard.string(forKey: LocalizedUserDefaultsKey) == nil + } + + // 还原为系统默认语言 + func resetToSystemLanguage() { + UserDefaults.standard.removeObject(forKey: LocalizedUserDefaultsKey) + UserDefaults.standard.synchronize() + } + + // 获取本地化字符串 + func localizedString(forKey key: String, tableName: String? = nil) -> String { + if let localizedData = localizedData, + let text = localizedData[key] { + return text + + } else if let selectedLanguage = UserDefaults.standard.string(forKey: LocalizedUserDefaultsKey), + let bundlePath = Bundle.main.path(forResource: selectedLanguage, ofType: "lproj"), + let bundle = Bundle(path: bundlePath) { + + return bundle.localizedString(forKey: key, value: nil, table: tableName) + } else { + return NSLocalizedString(key, tableName: tableName, bundle: .main, value: "", comment: "") + } + } + +} + + +extension String { + var localized: String { + var text = FALocalized.manager.localizedString(forKey: self) + text = text.replacingOccurrences(of: "
", with: "\n") + return text + } + + func localizedReplace(text: String?) -> String { + return self.localized.replacingOccurrences(of: "##", with: text ?? "") + } +} diff --git a/Fableon/Libs/FALogin/FALogin.swift b/Fableon/Libs/FALogin/FALogin.swift new file mode 100644 index 0000000..4dcf83d --- /dev/null +++ b/Fableon/Libs/FALogin/FALogin.swift @@ -0,0 +1,60 @@ +// +// FALogin.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/15. +// + +import UIKit + +let kFAUserTokenDefaultsKey = "kFAUserTokenDefaultsKey" +let kFAUserInfoDefaultsKey = "kFAUserInfoDefaultsKey" + +class FALogin: NSObject { + static let manager = FALogin() + + private(set) var token = UserDefaults.fa_object(forKey: kFAUserTokenDefaultsKey, as: FATokenModel.self) + private(set) var userInfo = UserDefaults.fa_object(forKey: kFAUserInfoDefaultsKey, as: FAUserInfo.self) + + + private func setToken(_ token: FATokenModel?) { + self.token = token + UserDefaults.fa_setObject(token, forKey: kFAUserTokenDefaultsKey) + } + + private func setUserInfo(_ userInfo: FAUserInfo?) { + self.userInfo = userInfo + UserDefaults.fa_setObject(userInfo, forKey: kFAUserInfoDefaultsKey) + } + +} + +extension FALogin { + + func requestUserToken(completer: (() -> Void)?) { + FANetworkManager.manager.request(FABaseURL + "/customer/register") { (response: FANetworkManager.Response) in + if let token = response.data { + self.setToken(token) + } + completer?() + } + } + + func requestUserInfo(completer: (() -> Void)?) { + FANetworkManager.manager.request(FABaseURL + "/customer/info", method: .get) { (response: FANetworkManager.Response) in + if let userInfo = response.data { + self.setUserInfo(userInfo) + NotificationCenter.default.post(name: Self.userInfoUpdateNotification, object: nil) + } + completer?() + } + + } +} + +extension FALogin { + + ///用户信息更新 + @objc static let userInfoUpdateNotification = NSNotification.Name(rawValue: "FALogin.userInfoUpdateNotification") + +} diff --git a/Fableon/Libs/FALogin/FATokenModel.swift b/Fableon/Libs/FALogin/FATokenModel.swift new file mode 100644 index 0000000..d63c1fc --- /dev/null +++ b/Fableon/Libs/FALogin/FATokenModel.swift @@ -0,0 +1,35 @@ +// +// FATokenModel.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/15. +// + +import UIKit +import SmartCodable + +class FATokenModel: NSObject, SmartCodable, NSSecureCoding { + + var auto_login: Int? + var customer_id: String? + var token: String? + + required override init() { } + + static var supportsSecureCoding: Bool { + return true + } + + func encode(with coder: NSCoder) { + coder.encode(token, forKey: "token") + coder.encode(customer_id, forKey: "customer_id") + coder.encode(auto_login, forKey: "auto_login") + } + + required init?(coder: NSCoder) { + super.init() + token = coder.decodeObject(of: NSString.self, forKey: "token") as? String + customer_id = coder.decodeObject(of: NSString.self, forKey: "customer_id") as? String + auto_login = coder.decodeObject(of: NSNumber.self, forKey: "auto_login")?.intValue + } +} diff --git a/Fableon/Libs/FALogin/FAUserInfo.swift b/Fableon/Libs/FALogin/FAUserInfo.swift new file mode 100644 index 0000000..74cea37 --- /dev/null +++ b/Fableon/Libs/FALogin/FAUserInfo.swift @@ -0,0 +1,49 @@ +// +// Untitled.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/15. +// + +import UIKit +import SmartCodable + +class FAUserInfo: NSObject, SmartCodable, NSSecureCoding { + + var id: String? + var customer_id: String? + var is_tourist: Bool? + var family_name: String? + var avator: String? + + func getNickName() -> String { + if let name = family_name, !name.isEmpty { + return name + } else { + return "Visitor" + } + } + + required override init() { } + + static var supportsSecureCoding: Bool { + return true + } + + func encode(with coder: NSCoder) { + coder.encode(id, forKey: "id") + coder.encode(customer_id, forKey: "customer_id") + coder.encode(is_tourist, forKey: "is_tourist") + coder.encode(avator, forKey: "avator") + coder.encode(family_name, forKey: "family_name") + } + + required init?(coder: NSCoder) { + super.init() + id = coder.decodeObject(of: NSString.self, forKey: "id") as? String + customer_id = coder.decodeObject(of: NSString.self, forKey: "customer_id") as? String + is_tourist = coder.decodeObject(of: NSNumber.self, forKey: "is_tourist")?.boolValue + avator = coder.decodeObject(of: NSString.self, forKey: "avator") as? String + family_name = coder.decodeObject(of: NSString.self, forKey: "family_name") as? String + } +} diff --git a/Fableon/Libs/FATool/FATool.swift b/Fableon/Libs/FATool/FATool.swift new file mode 100644 index 0000000..561fb19 --- /dev/null +++ b/Fableon/Libs/FATool/FATool.swift @@ -0,0 +1,54 @@ +// +// FATool.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/15. +// +import Foundation +import UIKit + +#if DEBUG +func debugLog(_ msg: Any, file: String = #file, function: String = #function, line: Int = #line) { + print("\n\(Date(timeIntervalSinceNow: 8 * 60 * 60)) \(file.components(separatedBy: "/").last ?? "") \(function) \(line): \(msg)") +} +#else +func debugLog(_ msg: Any) { } +#endif + + +class FATool { + + static var windowScene: UIWindowScene? + + static var keyWindow: UIWindow? { + return windowScene?.keyWindow + } + + static var rootViewController: UIViewController? { + return keyWindow?.rootViewController + } + + static var topViewController: UIViewController? { + var resultVC: UIViewController? = self.rootViewController + if let rootNav = resultVC as? UINavigationController { + resultVC = rootNav.topViewController + } + + resultVC = self._topViewController(resultVC) + while resultVC?.presentedViewController != nil { + resultVC = self._topViewController(resultVC?.presentedViewController) + } + return resultVC + } + + private static func _topViewController(_ vc: UIViewController?) -> UIViewController? { + if vc is UINavigationController { + return _topViewController((vc as? UINavigationController)?.topViewController) + } else if vc is UITabBarController { + return _topViewController((vc as? UITabBarController)?.selectedViewController) + } else { + return vc + } + } + +} diff --git a/Fableon/Libs/FSPagerView/FAPagerViewTransformer.swift b/Fableon/Libs/FSPagerView/FAPagerViewTransformer.swift new file mode 100644 index 0000000..725657e --- /dev/null +++ b/Fableon/Libs/FSPagerView/FAPagerViewTransformer.swift @@ -0,0 +1,20 @@ +// +// FAPagerViewTransformer.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/16. +// + +import UIKit +import FSPagerView + +class FAPagerViewTransformer: FSPagerViewTransformer { + + + override func proposedInteritemSpacing() -> CGFloat { + guard let pagerView = self.pagerView else { + return 0 + } + return pagerView.interitemSpacing + } +} diff --git a/Fableon/Libs/FSPagerView/FSPagerSwiftUIView.swift b/Fableon/Libs/FSPagerView/FSPagerSwiftUIView.swift new file mode 100644 index 0000000..8b79843 --- /dev/null +++ b/Fableon/Libs/FSPagerView/FSPagerSwiftUIView.swift @@ -0,0 +1,138 @@ +// +// FSPagerSwiftUIView.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/15. +// + + +import SwiftUI +import FSPagerView + +struct FSPagerSwiftUIView: UIViewRepresentable { + typealias UIViewType = FSPagerView + private let data: [Data] + private let content: (Data) -> Cell + private var transformer: FSPagerViewTransformer? + private var isLoop: Bool = false + private var itemSize: CGSize = .zero + private var didSelect: ((Int) -> Void)? + + + + init( + _ data: [Data], + _ content: @escaping (Data) -> Cell + ) { + self.data = data + self.content = content + } + + func makeCoordinator() -> Coordinator { + return Coordinator(data, self, content) + } + + func makeUIView(context: Context) -> FSPagerView { + let view = FSPagerView() + self.updatePropertyValues(view) + view.dataSource = context.coordinator + view.delegate = context.coordinator + view.register(HostingCell.self, forCellWithReuseIdentifier: "Cell") + return view + } + + func updateUIView(_ uiView: FSPagerView, context: Context) { +// uiView.reloadData() + } + + private func updatePropertyValues(_ pagerView: FSPagerView) { + if pagerView.isInfinite != isLoop { + pagerView.isInfinite = isLoop + } + if pagerView.transformer != transformer { + pagerView.transformer = transformer + } + if pagerView.itemSize != itemSize { + pagerView.itemSize = itemSize + } + } + + // 桥接代理的 Coordinator + class Coordinator: NSObject, FSPagerViewDataSource, FSPagerViewDelegate { + private var data: [Data] + private let content: (Data) -> Cell + private let pagerView: FSPagerSwiftUIView + + init(_ data: [Data], + _ pagerView: FSPagerSwiftUIView, + _ content: @escaping (Data) -> Cell + ) { + self.data = data + self.content = content + self.pagerView = pagerView + } + + func numberOfItems(in pagerView: FSPagerView) -> Int { + return data.count + } + + func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewCell { + let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "Cell", at: index) as! HostingCell + let data = self.data[index] + let view = content(data) + cell.setup(with: view) + return cell + } + + func pagerView(_ pagerView: FSPagerView, didSelectItemAt index: Int) { + self.pagerView.didSelect?(index) + } + } +} + + +extension FSPagerSwiftUIView { + func transformer(_ newValue: FSPagerViewTransformer?) -> Self { + var modified = self + modified.transformer = newValue + return modified + } + + func isLoop(_ newValue: Bool) -> Self { + var modified = self + modified.isLoop = newValue + return modified + } + + func itemSize(_ newValue: CGSize) -> Self { + var modified = self + modified.itemSize = newValue + return modified + } +} + +private class HostingCell: FSPagerViewCell { + var host: UIHostingController? + + func setup(with view: Content) { + contentView.layer.shadowOpacity = 0 + + if host == nil { + let controller = UIHostingController(rootView: view) + host = controller + + guard let content = controller.view else { return } + content.backgroundColor = .clear + content.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(content) + + content.topAnchor.constraint(equalTo: contentView.topAnchor).isActive = true + content.leftAnchor.constraint(equalTo: contentView.leftAnchor).isActive = true + content.bottomAnchor.constraint(equalTo: contentView.bottomAnchor).isActive = true + content.rightAnchor.constraint(equalTo: contentView.rightAnchor).isActive = true + } else { + host?.rootView = view + } + setNeedsLayout() + } +} diff --git a/Fableon/Libs/HUD/FAHUD.swift b/Fableon/Libs/HUD/FAHUD.swift new file mode 100644 index 0000000..2e3b026 --- /dev/null +++ b/Fableon/Libs/HUD/FAHUD.swift @@ -0,0 +1,21 @@ +// +// FAHUD.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/29. +// + +import SVProgressHUD + +struct FAHUD { + + static func show(containerView: UIView? = nil, type: SVProgressHUDMaskType = .clear) { + SVProgressHUD.setContainerView(containerView) + SVProgressHUD.setDefaultMaskType(type) + SVProgressHUD.show() + } + + static func dismiss() { + SVProgressHUD.dismiss() + } +} diff --git a/Fableon/Libs/HUD/FAToast.swift b/Fableon/Libs/HUD/FAToast.swift new file mode 100644 index 0000000..c68bb9f --- /dev/null +++ b/Fableon/Libs/HUD/FAToast.swift @@ -0,0 +1,22 @@ +// +// FAToast.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/29. +// + +import Toast + +struct FAToast { + + static func config() { + CSToastManager.setTapToDismissEnabled(false) + CSToastManager.setDefaultDuration(2) + CSToastManager.setDefaultPosition(CSToastPositionCenter) + } + + static func show(text: String?) { + guard let text = text else { return } + FATool.keyWindow?.makeToast(text) + } +} diff --git a/Fableon/Libs/WaterfallFlowLayout/FAWaterfallFlowLayout.swift b/Fableon/Libs/WaterfallFlowLayout/FAWaterfallFlowLayout.swift new file mode 100644 index 0000000..4b31510 --- /dev/null +++ b/Fableon/Libs/WaterfallFlowLayout/FAWaterfallFlowLayout.swift @@ -0,0 +1,191 @@ +// +// FAWaterfallFlowLayout.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/9/15. +// + +import UIKit + +@objc protocol FAWaterfallMutiSectionDelegate: NSObjectProtocol { + // 必选delegate实现 + /// collectionItem高度 + func heightForRowAtIndexPath(collectionView collection: UICollectionView, layout: FAWaterfallFlowLayout, indexPath: IndexPath, itemWidth: CGFloat) -> CGFloat + + // 可选delegate实现 + /// 每个section 列数(默认2列) + @objc optional func columnNumber(collectionView collection: UICollectionView, layout: FAWaterfallFlowLayout, section: Int) -> Int + + /// header高度(默认为0) + @objc optional func referenceSizeForHeader(collectionView collection: UICollectionView, layout: FAWaterfallFlowLayout, section: Int) -> CGSize + + /// footer高度(默认为0) + @objc optional func referenceSizeForFooter(collectionView collection: UICollectionView, layout: FAWaterfallFlowLayout, section: Int) -> CGSize + + /// 每个section 边距(默认为0) + @objc optional func insetForSection(collectionView collection: UICollectionView, layout: FAWaterfallFlowLayout, section: Int) -> UIEdgeInsets + + /// 每个section item上下间距(默认为0) + @objc optional func lineSpacing(collectionView collection: UICollectionView, layout: FAWaterfallFlowLayout, section: Int) -> CGFloat + + /// 每个section item左右间距(默认为0) + @objc optional func interitemSpacing(collectionView collection: UICollectionView, layout: FAWaterfallFlowLayout, section: Int) -> CGFloat + + /// section头部header与上个section尾部footer间距(默认为0) + @objc optional func spacingWithLastSection(collectionView collection: UICollectionView, layout: FAWaterfallFlowLayout, section: Int) -> CGFloat +} + +class FAWaterfallFlowLayout: UICollectionViewFlowLayout { + weak var delegate: FAWaterfallMutiSectionDelegate? + + private var sectionInsets: UIEdgeInsets = .zero + private var columnCount: Int = 2 + private var lineSpacing: CGFloat = 0 + private var interitemSpacing: CGFloat = 0 + private var headerSize: CGSize = .zero + private var footerSize: CGSize = .zero + + //存放attribute的数组 + private var attrsArray: [UICollectionViewLayoutAttributes] = [] + //存放每个section中各个列的最后一个高度 + private var columnHeights: [CGFloat] = [] + //collectionView的Content的高度 + private var contentHeight: CGFloat = 0 + //记录上个section高度最高一列的高度 + private var lastContentHeight: CGFloat = 0 + //每个section的header与上个section的footer距离 + private var spacingWithLastSection: CGFloat = 0 + + + override func prepare() { + super.prepare() + self.contentHeight = 0 + self.lastContentHeight = 0 + self.spacingWithLastSection = 0 + self.lineSpacing = 0 + self.sectionInsets = .zero + self.headerSize = .zero + self.footerSize = .zero + self.columnHeights.removeAll() + self.attrsArray.removeAll() + + let sectionCount = self.collectionView!.numberOfSections + // 遍历section + for idx in 0.. [UICollectionViewLayoutAttributes]? { + return self.attrsArray + } + + override func layoutAttributesForItem(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? { + if let column = self.delegate?.columnNumber?(collectionView: self.collectionView!, layout: self, section: indexPath.section) { + self.columnCount = column + } + if let lineSpacing = self.delegate?.lineSpacing?(collectionView: self.collectionView!, layout: self, section: indexPath.section) { + self.lineSpacing = lineSpacing + } + if let interitem = self.delegate?.interitemSpacing?(collectionView: self.collectionView!, layout: self, section: indexPath.section) { + self.interitemSpacing = interitem + } + + let attri = UICollectionViewLayoutAttributes(forCellWith: indexPath) + let weight = self.collectionView!.frame.size.width + let itemSpacing = CGFloat(self.columnCount - 1) * self.interitemSpacing + let allWeight = weight - self.sectionInsets.left - self.sectionInsets.right - itemSpacing + let cellWeight = allWeight / CGFloat(self.columnCount) + let cellHeight: CGFloat = (self.delegate?.heightForRowAtIndexPath(collectionView: self.collectionView!, layout: self, indexPath: indexPath, itemWidth: cellWeight))! + + var tmpMinColumn = 0 + var minColumnHeight = self.columnHeights[0] + for i in 0.. columnH { + minColumnHeight = columnH + tmpMinColumn = i + } + } + let cellX = self.sectionInsets.left + CGFloat(tmpMinColumn) * (cellWeight + self.interitemSpacing) + var cellY: CGFloat = 0 + cellY = minColumnHeight + if cellY != self.lastContentHeight { + cellY += self.lineSpacing + } + + if self.contentHeight < minColumnHeight { + self.contentHeight = minColumnHeight + } + + attri.frame = CGRect(x: cellX, y: cellY, width: cellWeight, height: cellHeight) + self.columnHeights[tmpMinColumn] = attri.frame.maxY + //取最大的 + for i in 0.. UICollectionViewLayoutAttributes? { + let attri = UICollectionViewLayoutAttributes(forSupplementaryViewOfKind: elementKind, with: indexPath) + if elementKind == UICollectionView.elementKindSectionHeader { + if let headerSize = self.delegate?.referenceSizeForHeader?(collectionView: self.collectionView!, layout: self, section: indexPath.section) { + self.headerSize = headerSize + } + self.contentHeight += self.spacingWithLastSection + attri.frame = CGRect(x: 0, y: self.contentHeight, width: self.headerSize.width, height: self.headerSize.height) + self.contentHeight += self.headerSize.height + self.contentHeight += self.sectionInsets.top + } else if elementKind == UICollectionView.elementKindSectionFooter { + if let footerSize = self.delegate?.referenceSizeForFooter?(collectionView: self.collectionView!, layout: self, section: indexPath.section) { + self.footerSize = footerSize + } + self.contentHeight += self.sectionInsets.bottom + attri.frame = CGRect(x: 0, y: self.contentHeight, width: self.footerSize.width, height: self.footerSize.height) + self.contentHeight += self.footerSize.height + } + return attri + } + + override var collectionViewContentSize: CGSize { + return CGSize(width: self.collectionView!.frame.size.width, height: self.contentHeight) + } +} diff --git a/Fableon/Source/Assets.xcassets/AccentColor.colorset/Contents.json b/Fableon/Source/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/Fableon/Source/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Fableon/Source/Assets.xcassets/AppIcon.appiconset/Contents.json b/Fableon/Source/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..011f599 --- /dev/null +++ b/Fableon/Source/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,14 @@ +{ + "images" : [ + { + "filename" : "Fableon_logo.jpg", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Fableon/Source/Assets.xcassets/AppIcon.appiconset/Fableon_logo.jpg b/Fableon/Source/Assets.xcassets/AppIcon.appiconset/Fableon_logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ef4e73980aabde205a7830f127582aacf581bb92 GIT binary patch literal 428680 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%0A_0pp7?+-|VL)T19`B)SvXx`G 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�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

DFM?FV?VOS;R! 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 literal 0 HcmV?d00001 diff --git a/Fableon/Source/Assets.xcassets/Contents.json b/Fableon/Source/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Fableon/Source/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Fableon/Source/Assets.xcassets/LaunchScreen/Contents.json b/Fableon/Source/Assets.xcassets/LaunchScreen/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Fableon/Source/Assets.xcassets/LaunchScreen/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Fableon/Source/Assets.xcassets/LaunchScreen/launch_bg_image.imageset/4fa48a3ef0637ef7052ed9e3d8e780fc6037d6655e0b7054f37a2f0d4a578175 1@2x.png b/Fableon/Source/Assets.xcassets/LaunchScreen/launch_bg_image.imageset/4fa48a3ef0637ef7052ed9e3d8e780fc6037d6655e0b7054f37a2f0d4a578175 1@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..13d9aabe5acb15b6caf56c0288c9684b261dda8e GIT binary patch literal 961083 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