Skip to content

Commit f96efc0

Browse files
authored
Release 1.0.0-beta.1 (#12)
* IOS-1 Update .gitignore * IOS-1 Add Brewfile with xcodegen, cocoapods brews Add Gemfile with fastlane gem * IOS-1 Add Fastlane fastfile, cocoa podfile Add project.yml for xcodegen Add swiftgen.yml, *Aseets.stencil for swiftgen * IOS-1 Add automation install/build script Add GitHubAction workflow ci.yml * IOS-1 Create project * IOS-1 Add colors, part of images * IOS-1 Update ci.yml for self-hosted runner Update setup.sh script to creation Generated folders * IOS-2 Add App Constants Add domain closure typealiases Add UIDevice device identification extension Add logging * IOS-2 Add API Service Add API Error Localizer Add global API Wrapper + protocol * IOS-2 Add app CommonRouter * IOS-2 Add localization Fix badgeGreenPrimary color Add Catalogue, Common, Navigation icons assets * IOS-2 Add APIResourcePath, APIResourceServer Add APIResourceService, APIResponse Add region (City), Location, Category, , DummyResponse models Add Coordinatable protocol Add Pagination Add Product* models * IOS-2 Add Date formatter extension Add Int to double extension Add Decimal, Double, String + Price formatter extension Add String+isNilOrEmpty, String+Emptyness, String+URL extensions Add HEXColor typealias * IOS-2 Add Keychain wrapper * IOS-2 Add SettingsService * IOS-2 Add Store RootTabController * IOS-2 Add FavoritesService Add Router Add UIApplication+KeyWindow, UIApplication+HideKeyboard extensions * IOS-2 Fix ci.yml and setup.sh * IOS-2 Add NIblessTabBarController * IOS-2 Add User.Update DTO model * IOS-2 Add employee user Fix APIService user used * IOS-2 Add address dto model Add setupAppearance, setupFactory, setupImageCache scene delegate extension Add Notification.Name extension with refreshAllTabs name Add Icon colors * IOS-3 Add domain buttons factory and builder And navigation button * IOS-3 Extend collections with registering cells Add Rotation loader UIView extension Add safe collection subscript * IOS-3 Add LoaderWrapper Add NiblessView+Controller, Nibless* collections, NiblessButton Add RefreshControlWrapper Add DomainSearchBar + ViewModel Add ShadowableView * IOS-3 Add AlertViewController + helpers Add UIImageView extension with Kingfisher fetching images Add KingfisherOptionsInfo extension with predefined options Add LocationManager Fix SettingsKey * IOS-3 Fix fastfile ui testing device * IOS-3 Add RegionAgent, RegionService Add preview utility with domain appearance Fix FavoritesService * IOS-3 Add both targets Intro modules Add Collections DataSource Add smallest compute variable for minimal existing size * IOS-4 Add Region Selection module * IOS-4 Add region view to RegionService * IOS-4 Add Intro view injection * IOS-5 Fix MainBanner model make placeType optional Add coding keys to UISettings model Add products api path Add starred computed property to Product extension * IOS-5 Add DomainHeaderWithButtonCell * IOS-5 Add Main screen table view cells * IOS-5 Add main screen module * IOS-5 Fix redirect id type * IOS-6 Add NiblessCollectionReusableView.swift Add dismissKeyboard func to common NiblessVC Add helper funcs present, push, dismiss to UIVC extension Rename DomainHeaderWithButtonCell to DomainHeaderWithButtonTableCell * IOS-6 Add SearchSuggestion model Add popularSearch api resource path Add missing localizations string Add common API response typealias * IOS-6 Add DomainBoldWithButtonCollectionHeader - collection reusable header view Reuse sale api calling from ApiWrapper in MainApiService * IOS-6 Add ImageSlideshow framework Rename ImageSource (ImageSlideshow conflict): - Rename CustomImageSource to CustomImageSourceProtocol - Rename ImageSource to CustomImageSource Add ImageSlideshow extension with closeView, toSleep functions and add KingfisherSource (external «feiin» contributor) * IOS-6 Add missing PaginationResponse CodingKeys Fix defaultVariant returns nil, replace compare property «id» with «article» Add IndexPath extension for zero row and section Add toCGFloat, toString Int extensions Add textPublisher UITextField extension (for observing) Add accentTertiaryFaded color Add missing localization Add missing productsCount property to Category * IOS-6 Add DomainBadgeView Add new size to LoaderWrapper.LoaderSize Add NiblessCollectionViewLayout Add DomainPageControl Fix DomainBoldWithButtonCollectionHeader UI, ViewModel Fix DomainSearchBar UI, refactor, fix publisher subscription and debouncing Refactor IntoViewController, IntroViewModel, IntroChildViewModel * IOS-6 Split RootTabController.Tab enum by targets Add SalesResponse, ProductResponse typealiases Add Gender localization Refactor RegionModel, RegionCell, RegionView Fix date decoding error (add new strategies) * IOS-6 Add ProductCell, ProductImageSlider Replace BannerProductCollectionViewCell with ProductCell Refactor Main module, BannerCollectionViewCell + ViewModel, BannerHorizontalCollectionCell + ViewModel, BannerTagsCollectionCell, BannerVerticalCollectionCell + ViewModel * IOS-6 Add Suggestion DTO models Add UniversalPaginator Add products request to APIWrapper * IOS-6 Add Search flow cells - SearchTagCell + ViewModel - SearchTagsCollectionCell + ViewModel Add SearchTagsSizeCalculator to calculate categories tags collection cell sizes Add SearchTagsCollectionLayout Add SearchEmptyResultView * IOS-6 Add search flow * IOS-7 Add favorites flow (#7) * IOS-7 Deny autoupdate fastlane Add new image Add UIColor+Color, UIFont+Font extensions for SwiftUI Add missing localization Add navigationBar shadow toggler Fix ImageSize constants Fix undirectionalConstraint * IOS-7 Refactor ProductCell, DomainPageControl Refactor DomainBadgeView + BadgeConfiguration Add ParametersClosure typealias Replace NiblessView UIView extension with NiblessControl UIControl extension * IOS-7 Remove ImageSlideShow pod (Replace to custom mu image slider) Add ids property with products ids to FavoriteService Replace product cell size (type) for main flow Replace product bundle identifiers * IOS-7 Add SwiftUI listing ProductCell + ViewModel Add SwiftUI custom components: - CustomizedPageControl - CustomCircularProgressView (Loader) - NavigationShadowVStack, NavigationBarShadowModifier, ViewShadowModifier - DomainHostingController - DomainBadge, DomainMessage - StrikethroughPriceView (for old price) * IOS-7 Add favorites flow + section builder helper * IOS-7 Fix incorrect price displaying * IOS-7 Fix updating fastlane * IOS-8 Add auth flow (#8) * IOS-8 Add static resource url with user info pages Add UInt64+String extension Add isModal var to UIViewController extension Add missing localization Add icon Refactor project.yml for XcodeGen Add exception domains to info.plist * IOS-8 Fix updating root tab controller Add PhoneNumberKit extension for verifying and formatted example number Add setupPresentationMode.swift UIViewController extension (page sheet) Replace func parameter for present alert with NetworkErrorAlert model Refactor DomainMessage Refactor NavigationButton (UINavigationController extension) Fix ProductListingCell UI * IOS-8 Add DomainWebViewController + representable Add WebKit cache cleaner Add DomainWebViewController to MainRouter for showing url Refactor FavoritesService Add missing logic + upgrade APIErrorLocalizer Refactor APIService + add error localization Fix token refreshing * IOS-8 Fix authorization user checking for fav flow Refactor IntroChildViewModel * IOS-8 Add SwiftUI components Add PhoneNumberModifier Add View+onTapBackground extension Add View+placeholder extension Add DomainLabeledTextField * IOS-8 Add Authorization flow * IOS-9 Add signup flow (#9) * IOS-9 WIP SignUp flow * IOS-9 Add missing localization, color Add birthDate, toClearISO8601 formatters to Date extension Add phoneFormatted to String extension Add minimal back button display mode to setupPresentationMode Add backgroundOverlayLight color Set button’s images to vector Fix User.Update fields types IOS-9 Add missing localization, color Add birthDate, toClearISO8601 formatters to Date extension Add phoneFormatted to String extension Add minimal back button display mode to setupPresentationMode Add backgroundOverlayLight color Set button’s images to vector Fix User.Update fields types * IOS-9 Fix HostingController bar when dissappear Refactor AlertPresentable Fix DomainLabeledTextField tap action bug Replace isFocusable, isSecure with var to dynamic changes Fix ProductCell reusable displaying non-starred item as starred Fix show authorization completion call * IOS-9 Fix favorites badge incorrect count when add Replace AuthorizationViewModel.VerificationHelper to separated Validator Refactor CommonRouterProtocol Add conformance CaseIterable to Gender * IOS-9 Add refreshing token ability Add refreshing token when received 401 response status Add authentication field to EmployeeCredential model Add UserCredential init from User.Update model * IOS-9 Add ProfileData child view model Fill ProfileDataModel - add row, routing * IOS-9 Add business logic to ProfileDataViewModel Add ProfileDataViewModel+ErrorState helper Add ProfileDataViewModel+TextFieldStateFactory helper Add ProfileDataViewModel+UserBuilder helper * IOS-9 Add ProfileDataView Add custom SwiftUI DatePickerControl Add SwiftUI GenderControl * IOS-9 Add Authorization to navigationController Add registration ability to Authorization flow * IOS-9 Add showNetworkError to Router * IOS-10 Add autocomplete suggestions flow (#10) * IOS-10 WIP Autocomplete suggestions flow Fix Suggestion model * IOS-10 Add AutocompleteFieldSuggestionCell Add HighlightButtonStyle Add suggestions api resource paths * IOS-10 Fill Autocomplete model Add FieldType, Add table(list) model Hint Add api getSuggestions func * IOS-10 Add business logic * IOS-10 Add AutocompleteFieldView * IOS-10 Add Favorites flow missing showAuth method * IOS-10 Add autocomplete to signup flow Add ProfileDataViewModel+AutocompleteModel helper * IOS-10 Fix unexpected registration screen closing * IOS-11 Prepare release update readme (#11) * IOS-11 Add missing images * IOS-11 Fix swiftgen assets, rename Replace using UIColor(resource:, UIImage(rerource:, Color, Image with using Assets* * IOS-11 Add intro view injection to POS Replace Coordinatable to Address model folder Add localization * IOS-11 Add under development screen * IOS-11 Fix localization for permissions requests * IOS-11 Update README.MD * IOS-11 Fix location button
1 parent f5a56ad commit f96efc0

File tree

498 files changed

+33999
-18
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

498 files changed

+33999
-18
lines changed

.github/workflows/ci.yml

+225
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,225 @@
1+
name: CI/CD Pipeline
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
branches:
7+
- develop
8+
- master
9+
pull_request:
10+
branches:
11+
- develop
12+
- master
13+
14+
concurrency:
15+
group: ${{ github.workflow }}-${{ github.ref }}
16+
cancel-in-progress: true
17+
18+
jobs:
19+
check_merge_request:
20+
name: Check merge request availability
21+
runs-on: self-hosted
22+
if: github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'develop'
23+
steps:
24+
- name: Checkout code
25+
uses: actions/checkout@v4
26+
27+
- name: Install dependencies
28+
run: |
29+
brew bundle
30+
export PATH="/opt/homebrew/opt/ruby/bin:$PATH"
31+
echo $PATH
32+
gem install bundler --user-install
33+
bundle install
34+
35+
- name: Pull Develop Branch
36+
run: |
37+
git remote set-url origin https://github.com/mayer1a/MEOWLS.git
38+
git fetch origin
39+
git checkout develop
40+
git reset --hard origin/develop
41+
git pull --force origin develop --allow-unrelated-histories
42+
43+
- name: Merge Strategy
44+
run: |
45+
git merge origin/${{ github.event.pull_request.head.ref }} --no-commit --no-ff
46+
47+
- name: Make project
48+
working-directory: ./Automation/Scripts
49+
run: |
50+
./setup
51+
52+
- name: Run debug builds
53+
working-directory: ./MEOWLS
54+
run: |
55+
bundle exec fastlane ios debug_build_store
56+
bundle exec fastlane ios debug_build_pos
57+
58+
- name: Check warnings in logs
59+
working-directory: ./MEOWLS
60+
run: |
61+
if [ "$(grep 'warning:' 'Store-Store Debug.log' | sort -u | grep -c -v 'Pods\|.swiftsourceinfo')" -gt 1 ]; then
62+
grep 'warning:' 'Store-Store Debug.log' | sort -u | grep -v 'Pods\|.swiftsourceinfo'
63+
echo "\e[31mВорнингов в проекте Store стало больше допустимого значения.\e"
64+
echo "Стало: $(grep "warning:" "Store-Store Debug.log" | sort -u | grep -c -v "Pods\|.swiftsourceinfo")"
65+
echo "Допустимое значение: 1"
66+
exit 1
67+
fi
68+
69+
if [ "$(grep 'warning:' 'POS-POS Debug.log' | sort -u | grep -c -v 'Pods\|.swiftsourceinfo')" -gt 5 ]; then
70+
grep 'warning:' 'POS-POS Debug.log' | sort -u | grep -v 'Pods\|.swiftsourceinfo'
71+
echo "\e[31mВорнингов в проекте POS стало больше допустимого значения.\e"
72+
echo "Стало: $(grep "warning:" "POS-POS Debug.log" | sort -u | grep -c -v "Pods\|.swiftsourceinfo")"
73+
echo "Допустимое значение: 5"
74+
exit 1
75+
fi
76+
77+
- name: Run API, Unit and UI tests for debug
78+
working-directory: ./MEOWLS
79+
run: |
80+
bundle exec fastlane ios api_tests_store
81+
bundle exec fastlane ios unit_tests_store
82+
bundle exec fastlane ios ui_tests_store
83+
bundle exec fastlane ios api_tests_pos
84+
bundle exec fastlane ios unit_tests_pos
85+
bundle exec fastlane ios ui_tests_pos
86+
87+
testflight_feature_store_build:
88+
name: Emulate debug Store pushing to testflight
89+
runs-on: self-hosted
90+
needs: check_merge_request
91+
if: github.event.ref == 'refs/heads/develop' && github.event_name == 'workflow_dispatch'
92+
steps:
93+
- name: TEST
94+
run: |
95+
echo "${{ github.event_name }}"
96+
97+
- name: Checkout code
98+
uses: actions/checkout@v4
99+
100+
- name: Run Store Unit Tests
101+
working-directory: ./MEOWLS
102+
run: |
103+
bundle exec fastlane ios emulate_testflight_pushing_feature_store
104+
105+
testflight_feature_pos_build:
106+
name: Emulate debug POS pushing to testflight
107+
runs-on: self-hosted
108+
needs: check_merge_request
109+
if: github.ref == 'refs/heads/develop' && github.event_name == 'workflow_dispatch'
110+
steps:
111+
- name: Checkout code
112+
uses: actions/checkout@v4
113+
114+
- name: Run POS Unit Tests
115+
working-directory: ./MEOWLS
116+
run: |
117+
bundle exec fastlane ios emulate_testflight_pushing_feature_pos
118+
119+
testflight_release_store_build:
120+
name: Emulate release Store pushing to testflight
121+
runs-on: self-hosted
122+
needs: check_merge_request
123+
if: github.ref == 'refs/heads/develop' && github.event_name == 'workflow_dispatch'
124+
steps:
125+
- name: Checkout code
126+
uses: actions/checkout@v4
127+
128+
- name: Release Store
129+
working-directory: ./MEOWLS
130+
run: |
131+
bundle exec fastlane ios emulate_testflight_pushing_release_store
132+
133+
testflight_release_pos_build:
134+
name: Emulate release POS pushing to testflight
135+
runs-on: self-hosted
136+
needs: check_merge_request
137+
if: github.ref == 'refs/heads/develop' && github.event_name == 'workflow_dispatch'
138+
steps:
139+
- name: Checkout code
140+
uses: actions/checkout@v4
141+
142+
- name: Release POS
143+
working-directory: ./MEOWLS
144+
run: |
145+
bundle exec fastlane ios emulate_testflight_pushing_release_pos
146+
147+
check_hotfix_merge_request_job:
148+
name: Check hotfix merge request availability
149+
runs-on: self-hosted
150+
if: github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'master'
151+
steps:
152+
- name: Checkout code
153+
uses: actions/checkout@v4
154+
155+
- name: Install dependencies
156+
working-directory: ./MEOWLS
157+
run: |
158+
brew bundle
159+
export PATH="/opt/homebrew/opt/ruby/bin:$PATH"
160+
echo $PATH
161+
gem install bundler --user-install
162+
bundle install
163+
164+
- name: Pull Master Branch
165+
working-directory: ./MEOWLS
166+
run: |
167+
git remote set-url origin https://github.com/mayer1a/MEOWLS.git
168+
git fetch origin
169+
git checkout master
170+
git reset --hard origin/master
171+
git pull --force origin master --allow-unrelated-histories
172+
173+
- name: Merge Strategy
174+
working-directory: ./MEOWLS
175+
run: |
176+
git merge origin/${{ github.event.pull_request.head.ref }} --no-commit --no-ff
177+
178+
- name: Make project
179+
working-directory: ./Automation/Scripts
180+
run: |
181+
./setup
182+
183+
- name: Run release builds
184+
working-directory: ./MEOWLS
185+
run: |
186+
bundle exec fastlane ios release_build_store
187+
bundle exec fastlane ios release_build_pos
188+
189+
- name: Run API, Unit and UI tests for Store
190+
working-directory: ./MEOWLS
191+
run: |
192+
bundle exec fastlane ios api_tests_store
193+
bundle exec fastlane ios unit_tests_store
194+
bundle exec fastlane ios ui_tests_store
195+
bundle exec fastlane ios api_tests_pos
196+
bundle exec fastlane ios unit_tests_pos
197+
bundle exec fastlane ios ui_tests_pos
198+
199+
testflight_hotfix_store_build:
200+
name: Emulate release Store hotfix pushing to testflight
201+
runs-on: self-hosted
202+
needs: check_hotfix_merge_request_job
203+
if: github.ref == 'refs/heads/master' && github.event_name == 'workflow_dispatch'
204+
steps:
205+
- name: Checkout code
206+
uses: actions/checkout@v4
207+
208+
- name: Hotfix Store
209+
working-directory: ./MEOWLS
210+
run: |
211+
bundle exec fastlane ios emulate_testflight_pushing_release_store
212+
213+
testflight_hotfix_pos_build:
214+
name: Emulate release POS hotfix pushing to testflight
215+
runs-on: self-hosted
216+
needs: check_hotfix_merge_request_job
217+
if: github.ref == 'refs/heads/master' && github.event_name == 'workflow_dispatch'
218+
steps:
219+
- name: Checkout code
220+
uses: actions/checkout@v4
221+
222+
- name: Hotfix POS
223+
working-directory: ./MEOWLS
224+
run: |
225+
bundle exec fastlane ios emulate_testflight_pushing_release_pos

.gitignore

+20-16
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
1-
### Objective-C ###
21
# Xcode
2+
#
33
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
44

55
## User settings
66
xcuserdata/
77

8+
**/MEOWLS.xcodeproj
9+
**/MEOWLS.xcworkspace
10+
11+
**/*Generated.swift
12+
813
## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9)
914
*.xcscmblueprint
1015
*.xccheckout
@@ -54,10 +59,7 @@ playground.xcworkspace
5459
# you should judge for yourself, the pros and cons are mentioned at:
5560
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
5661
#
57-
Pods/
58-
#
59-
# Add this line if you want to avoid checking in source code from the Xcode workspace
60-
# *.xcworkspace
62+
**/Pods/
6163

6264
# Carthage
6365
#
@@ -77,30 +79,32 @@ Dependencies/
7779
# For more information about the recommended setup visit:
7880
# https://docs.fastlane.tools/best-practices/source-control/#source-control
7981

82+
# fastlane specific
8083
**/fastlane/report.xml
84+
85+
# deliver temporary files
8186
**/fastlane/Preview.html
87+
88+
# snapshot generated screenshots
89+
**/fastlane/screenshots
90+
91+
# scan temporary files
8292
**/fastlane/test_output
83-
**/fastlane/FastlaneRunner
84-
screenshots
8593

86-
# Code Injection
87-
#
88-
# After new code Injection tools there's a generated folder /iOSInjectionProject
89-
# https://github.com/johnno1962/injectionforxcode
94+
# Fastlane.swift runner binary
95+
**/fastlane/FastlaneRunner
9096

91-
iOSInjectionProject/
97+
### Homebrew ###
98+
Brewfile.lock.json
9299

93100
### macOS ###
94101
# General
95102
.DS_Store
96103
.AppleDouble
97104
.LSOverride
98105

99-
# Icon must end with two \r
100-
Icon
101-
102106
# Thumbnails
103107
._*
104108

105109
# GoogleInfoPlist
106-
GBShop/Environments/GoogleService-Info.plist
110+
**/GoogleService-Info.plist

Automation/Scripts/setup

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
#!/bin/bash
2+
3+
# Path to the project directory
4+
PROJECT_DIR="../../MEOWLS"
5+
6+
# Path to the script directory
7+
SCRIPT_DIR="Automation/Scripts"
8+
9+
# Check and close the open MEOWLS project workspace in Xcode
10+
if [[ $1 == "clear" ]]; then
11+
osascript <<EOD > /dev/null 2>&1
12+
tell application "Xcode"
13+
if exists (workspace document 1 whose name is "MEOWLS.xcworkspace") then
14+
close (workspace document 1 whose name is "MEOWLS.xcworkspace") saving no
15+
else if exists (project document 1 whose name is "MEOWLS.xcodeproj") then
16+
close (project document 1 whose name is "MEOWLS.xcodeproj") saving no
17+
end if
18+
end tell
19+
EOD
20+
21+
# Wait a few seconds for Xcode to completely close the project
22+
sleep 2
23+
24+
# Delete existing Xcode projects and workspaces in the project directory
25+
rm -R "$PROJECT_DIR"/*.xcodeproj
26+
rm -R "$PROJECT_DIR"/*.xcworkspace
27+
fi
28+
29+
# Go to the project directory
30+
cd "$PROJECT_DIR"
31+
32+
# Launch swiftgen via its script in the Automation/Scripts folder
33+
mkdir -p Kit/Common/Resources/Generated
34+
mkdir -p Store/Common/Resources/Generated
35+
mkdir -p POS/Common/Resources/Generated
36+
swiftgen config run --config swiftgen.yml
37+
38+
# Run xcodegen via its script in the Automation/Scripts folder
39+
xcodegen -p "./"
40+
41+
# Install CocoaPods dependencies by updating the repository
42+
pod install --repo-update
43+
44+
# Add a 2 second delay
45+
sleep 2
46+
47+
# Open the updated Xcode workspace
48+
if [[ $1 == "open" ]]; then
49+
open ./*.xcworkspace
50+
fi

0 commit comments

Comments
 (0)