Skip to content

Commit 5f695f5

Browse files
committed
Рефактор
- Вынес несколько моделей из констант в отдельные файлы - Добавил возможность копировать имя пользователя в комментариях и в записях к дневнику
1 parent ee8cd27 commit 5f695f5

File tree

15 files changed

+108
-84
lines changed

15 files changed

+108
-84
lines changed

SwiftUI-WorkoutApp.xcodeproj/project.pbxproj

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@
5252
6758B946281ED194001D83D8 /* ErrorResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6758B945281ED194001D83D8 /* ErrorResponse.swift */; };
5353
675A370328547ACA00DAE071 /* Localizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = 675A370528547ACA00DAE071 /* Localizable.stringsdict */; };
5454
675A370A2854810B00DAE071 /* Utils in Frameworks */ = {isa = PBXBuildFile; productRef = 675A37092854810B00DAE071 /* Utils */; };
55+
675A370F2854B00B00DAE071 /* JournalAccess.swift in Sources */ = {isa = PBXBuildFile; fileRef = 675A370E2854B00B00DAE071 /* JournalAccess.swift */; };
56+
675A37112854B04400DAE071 /* TextEntryOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = 675A37102854B04400DAE071 /* TextEntryOption.swift */; };
57+
675A37132854B0BC00DAE071 /* MessageType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 675A37122854B0BC00DAE071 /* MessageType.swift */; };
58+
675A37152854B11300DAE071 /* Gender.swift in Sources */ = {isa = PBXBuildFile; fileRef = 675A37142854B11300DAE071 /* Gender.swift */; };
5559
675EC649281289FB00C2E229 /* SportsGroundSize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 675EC648281289FB00C2E229 /* SportsGroundSize.swift */; };
5660
675EC64B28128B7E00C2E229 /* SportsGroundGrade.swift in Sources */ = {isa = PBXBuildFile; fileRef = 675EC64A28128B7E00C2E229 /* SportsGroundGrade.swift */; };
5761
675EC64F2814126800C2E229 /* TextEntryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 675EC64E2814126800C2E229 /* TextEntryView.swift */; };
@@ -185,6 +189,10 @@
185189
6758B945281ED194001D83D8 /* ErrorResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ErrorResponse.swift; sourceTree = "<group>"; };
186190
675A370628547ACD00DAE071 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ru; path = ru.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
187191
675A3707285480E600DAE071 /* Utils */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = Utils; path = "SwiftUI-WorkoutApp/Utils"; sourceTree = "<group>"; };
192+
675A370E2854B00B00DAE071 /* JournalAccess.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JournalAccess.swift; sourceTree = "<group>"; };
193+
675A37102854B04400DAE071 /* TextEntryOption.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextEntryOption.swift; sourceTree = "<group>"; };
194+
675A37122854B0BC00DAE071 /* MessageType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageType.swift; sourceTree = "<group>"; };
195+
675A37142854B11300DAE071 /* Gender.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Gender.swift; sourceTree = "<group>"; };
188196
675EC648281289FB00C2E229 /* SportsGroundSize.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SportsGroundSize.swift; sourceTree = "<group>"; };
189197
675EC64A28128B7E00C2E229 /* SportsGroundGrade.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SportsGroundGrade.swift; sourceTree = "<group>"; };
190198
675EC64E2814126800C2E229 /* TextEntryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextEntryView.swift; sourceTree = "<group>"; };
@@ -588,19 +596,23 @@
588596
6758B933281DC198001D83D8 /* UserResponse.swift */,
589597
67E4266C2821429500DF82A7 /* UserModel.swift */,
590598
675462FE282FC6E6005BC86A /* MainUserForm.swift */,
599+
675A37142854B11300DAE071 /* Gender.swift */,
591600
672F2BE42832BE3E0000A193 /* EventResponse.swift */,
592601
67891E2E283E054F00B10802 /* EventForm.swift */,
593602
67FBF64828337876008A7968 /* EventType.swift */,
594603
67891E30283E105800B10802 /* EventResult.swift */,
595604
6758B945281ED194001D83D8 /* ErrorResponse.swift */,
596605
67D9167B2838D6610098D3CB /* DialogResponse.swift */,
597606
67D916892838F79D0098D3CB /* MessageResponse.swift */,
607+
675A37122854B0BC00DAE071 /* MessageType.swift */,
598608
6762774C283A343A009C203F /* JournalResponse.swift */,
599609
67627758283A6148009C203F /* JournalEntryResponse.swift */,
610+
675A370E2854B00B00DAE071 /* JournalAccess.swift */,
600611
6751569A2841316400501346 /* MediaFile.swift */,
601612
67A9C90428427D06005D6A36 /* SportsGroundFilter.swift */,
602613
67C87FD728438F1600D6377D /* PhotoContainer.swift */,
603614
6766A037284604B40033F1E8 /* Tab.swift */,
615+
675A37102854B04400DAE071 /* TextEntryOption.swift */,
604616
);
605617
path = Models;
606618
sourceTree = "<group>";
@@ -878,6 +890,7 @@
878890
6705E7EE283B703400DABCC8 /* JournalSettingsView.swift in Sources */,
879891
672BE768281FD60F00579183 /* City.swift in Sources */,
880892
6798AA40280AEDC900DB76F1 /* RootView.swift in Sources */,
893+
675A37112854B04400DAE071 /* TextEntryOption.swift in Sources */,
881894
675EC64F2814126800C2E229 /* TextEntryView.swift in Sources */,
882895
674D0623282A9896007E75C6 /* SearchUsersView.swift in Sources */,
883896
6798AA8C280C390F00DB76F1 /* CountriesView.swift in Sources */,
@@ -887,11 +900,13 @@
887900
675EC64B28128B7E00C2E229 /* SportsGroundGrade.swift in Sources */,
888901
6747575628113419002F0A24 /* ChangePasswordView.swift in Sources */,
889902
67515699283FEC3100501346 /* PickedImagesList.swift in Sources */,
903+
675A37132854B0BC00DAE071 /* MessageType.swift in Sources */,
890904
67C87FD328435E8600D6377D /* EnvironmentValues+.swift in Sources */,
891905
6758B932281DB1F7001D83D8 /* LoginResponse.swift in Sources */,
892906
676B3AFA283507E900DB4ADA /* EventDetailsViewModel.swift in Sources */,
893907
6758B92C281D9283001D83D8 /* EventFormViewModel.swift in Sources */,
894908
6705E7F2283B880A00DABCC8 /* JournalSettingsViewModel.swift in Sources */,
909+
675A37152854B11300DAE071 /* Gender.swift in Sources */,
895910
6798AA64280B1F0900DB76F1 /* WelcomeView.swift in Sources */,
896911
67891E36283E945100B10802 /* SportsGroundFormViewModel.swift in Sources */,
897912
67FBF64F28338A2E008A7968 /* EventDetailsView.swift in Sources */,
@@ -908,6 +923,7 @@
908923
6798AA86280C135E00DB76F1 /* Country.swift in Sources */,
909924
67627750283A3A54009C203F /* JournalsListView.swift in Sources */,
910925
67891E38283E947B00B10802 /* SportsGroundFormView.swift in Sources */,
926+
675A370F2854B00B00DAE071 /* JournalAccess.swift in Sources */,
911927
674B37B0282B9BE2001A5B66 /* CommentViewCell.swift in Sources */,
912928
674D061B28280A63007E75C6 /* FriendRequestsView.swift in Sources */,
913929
67627757283A4CBB009C203F /* JournalEntriesListViewModel.swift in Sources */,

SwiftUI-WorkoutApp/Constants.swift

Lines changed: 0 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,6 @@ enum Constants {
1212
static let oldAppStoreAddress = "https://itunes.apple.com/us/app/jobsy/id1035159361"
1313
static let rulesOfService = "https://workout.su/pravila"
1414

15-
enum API {
16-
static let baseURL = "https://workout.su/api/v3"
17-
static let timeOut = TimeInterval(15)
18-
static let codeOK = 200
19-
}
20-
2115
enum Feedback {
2216
static let subject = "Обратная связь"
2317
static let toEmail = "[email protected]"
@@ -43,58 +37,8 @@ enum Constants {
4337
static let resetSuccessful = "Инструкция для восстановления пароля выслана на email, указанный при регистрации"
4438
}
4539

46-
enum Gender: String, CaseIterable, CustomStringConvertible, Codable {
47-
case male = "Мужской"
48-
case female = "Женский"
49-
init(_ code: Int?) {
50-
self = code == .zero ? .male : .female
51-
}
52-
var code: Int { self == .male ? .zero : 1 }
53-
var description: String {
54-
self == .male ? "Мужчина" : "Женщина"
55-
}
56-
}
57-
5840
enum FriendAction: String {
5941
case sendFriendRequest = "Добавить в друзья"
6042
case removeFriend = "Удалить из друзей"
6143
}
62-
63-
enum MessageType {
64-
case incoming, sent
65-
var color: UIColor {
66-
self == .incoming ? .systemGreen : .systemBlue
67-
}
68-
}
69-
70-
enum TextEntryType {
71-
/// Комментарий к площадке
72-
case ground(id: Int)
73-
/// Комментарий к мероприятию
74-
case event(id: Int)
75-
/// Запись в дневнике
76-
case journal(id: Int)
77-
}
78-
79-
enum JournalAccess: Int, CaseIterable, CustomStringConvertible {
80-
case all = 0
81-
case friends = 1
82-
case nobody = 2
83-
84-
init(_ rawValue: Int?) {
85-
switch rawValue {
86-
case 0: self = .all
87-
case 1: self = .friends
88-
case 2: self = .nobody
89-
default: self = .all
90-
}
91-
}
92-
var description: String {
93-
switch self {
94-
case .all: return "Все"
95-
case .friends: return "Друзья"
96-
case .nobody: return "Только я"
97-
}
98-
}
99-
}
10044
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import Foundation
2+
3+
enum Gender: String, CaseIterable, CustomStringConvertible, Codable {
4+
case male = "Мужской"
5+
case female = "Женский"
6+
7+
init(_ code: Int?) {
8+
self = code == .zero ? .male : .female
9+
}
10+
11+
var code: Int { self == .male ? .zero : 1 }
12+
13+
var description: String {
14+
self == .male ? "Мужчина" : "Женщина"
15+
}
16+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import Foundation
2+
3+
enum JournalAccess: Int, CaseIterable, CustomStringConvertible {
4+
case all = 0
5+
case friends = 1
6+
case nobody = 2
7+
8+
init(_ rawValue: Int?) {
9+
switch rawValue {
10+
case 0: self = .all
11+
case 1: self = .friends
12+
case 2: self = .nobody
13+
default: self = .all
14+
}
15+
}
16+
var description: String {
17+
switch self {
18+
case .all: return "Все"
19+
case .friends: return "Друзья"
20+
case .nobody: return "Только я"
21+
}
22+
}
23+
}

SwiftUI-WorkoutApp/Models/JournalResponse.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,11 @@ extension JournalResponse {
3939
var lastMessageDateString: String {
4040
FormatterService.readableDate(from: lastMessageDate)
4141
}
42-
var viewAccessType: Constants.JournalAccess {
42+
var viewAccessType: JournalAccess {
4343
get { .init(viewAccess.valueOrZero) }
4444
set { viewAccess = newValue.rawValue }
4545
}
46-
var commentAccessType: Constants.JournalAccess {
46+
var commentAccessType: JournalAccess {
4747
get { .init(commentAccess.valueOrZero) }
4848
set { commentAccess = newValue.rawValue }
4949
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import Foundation
2+
import UIKit.UIColor
3+
4+
enum MessageType {
5+
case incoming, sent
6+
var color: UIColor {
7+
self == .incoming ? .systemGreen : .systemBlue
8+
}
9+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import Foundation
2+
3+
enum TextEntryOption {
4+
/// Комментарий к площадке
5+
case ground(id: Int)
6+
/// Комментарий к мероприятию
7+
case event(id: Int)
8+
/// Запись в дневнике
9+
case journal(id: Int)
10+
}

SwiftUI-WorkoutApp/Models/UserResponse.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ extension UserResponse {
4343
.init(string: imageStringURL.valueOrEmpty)
4444
}
4545
var gender: String {
46-
Constants.Gender(genderCode.valueOrZero).description
46+
Gender(genderCode.valueOrZero).description
4747
}
4848
var friendRequestsCount: Int {
4949
Int(friendRequestsCountString.valueOrEmpty).valueOrZero

SwiftUI-WorkoutApp/Screens/Components/Comments/CommentViewCell.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ private extension CommentViewCell {
3030
VStack(alignment: .leading) {
3131
Text((model.user?.userName).valueOrEmpty)
3232
.fontWeight(.medium)
33+
.textSelection(.enabled)
3334
Text(model.formattedDateString)
3435
.foregroundColor(.secondary)
3536
.font(.caption)

SwiftUI-WorkoutApp/Screens/Journals/EntriesList/JournalEntryCell.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ struct JournalEntryCell: View {
1818
Text(model.authorName.valueOrEmpty)
1919
.font(.headline)
2020
.lineLimit(1)
21+
.textSelection(.enabled)
2122
Spacer()
2223
Text(model.messageDateString)
2324
.font(.callout)

0 commit comments

Comments
 (0)