Skip to content

Commit 197a84c

Browse files
authored
Открываем экран регистрации внутри SFSafariViewController (#68)
* Открываем экран регистрации внутри SFSafariViewController * Поднял версию сборки до 3
1 parent bc3c566 commit 197a84c

File tree

4 files changed

+41
-4
lines changed

4 files changed

+41
-4
lines changed

SwiftUI-WorkoutApp.xcodeproj/project.pbxproj

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@
146146
67D9169628396C1E0098D3CB /* SendMessageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67D9169528396C1E0098D3CB /* SendMessageView.swift */; };
147147
67DD1120282C3CE400E3917C /* TextEntryViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67DD111F282C3CE400E3917C /* TextEntryViewModel.swift */; };
148148
67E4266D2821429500DF82A7 /* UserModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67E4266C2821429500DF82A7 /* UserModel.swift */; };
149+
67EA6A932999342100677664 /* SafariVCRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67EA6A922999342100677664 /* SafariVCRepresentable.swift */; };
149150
67F9534F2964A5700077DFDC /* ImagePicker in Frameworks */ = {isa = PBXBuildFile; productRef = 67F9534E2964A5700077DFDC /* ImagePicker */; };
150151
67FBF64928337876008A7968 /* EventType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67FBF64828337876008A7968 /* EventType.swift */; };
151152
67FBF64B283379D9008A7968 /* EventsListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67FBF64A283379D9008A7968 /* EventsListViewModel.swift */; };
@@ -311,6 +312,7 @@
311312
67D9169528396C1E0098D3CB /* SendMessageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SendMessageView.swift; sourceTree = "<group>"; };
312313
67DD111F282C3CE400E3917C /* TextEntryViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextEntryViewModel.swift; sourceTree = "<group>"; };
313314
67E4266C2821429500DF82A7 /* UserModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserModel.swift; sourceTree = "<group>"; };
315+
67EA6A922999342100677664 /* SafariVCRepresentable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SafariVCRepresentable.swift; sourceTree = "<group>"; };
314316
67FBF64828337876008A7968 /* EventType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EventType.swift; sourceTree = "<group>"; };
315317
67FBF64A283379D9008A7968 /* EventsListViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EventsListViewModel.swift; sourceTree = "<group>"; };
316318
67FBF64E28338A2E008A7968 /* EventDetailsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EventDetailsView.swift; sourceTree = "<group>"; };
@@ -759,6 +761,7 @@
759761
679F3AFE29683EB300BB3590 /* RoundedButtonLabel.swift */,
760762
679F3B002968401700BB3590 /* AdaptiveRoundedRectangleModifier.swift */,
761763
672609532977CCD300042226 /* AdaptiveColorModifier.swift */,
764+
67EA6A922999342100677664 /* SafariVCRepresentable.swift */,
762765
);
763766
path = Common;
764767
sourceTree = "<group>";
@@ -1148,6 +1151,7 @@
11481151
675EC6632815AA4A00C2E229 /* MapSnapshotView.swift in Sources */,
11491152
672BE762281FD4E300579183 /* AuthData.swift in Sources */,
11501153
67D9167E2838DC3E0098D3CB /* GenericListCell.swift in Sources */,
1154+
67EA6A932999342100677664 /* SafariVCRepresentable.swift in Sources */,
11511155
6758B92A281D8FD7001D83D8 /* SportsGroundDetailViewModel.swift in Sources */,
11521156
670CA1A0280E8F9B003914A3 /* ButtonInFormLabel.swift in Sources */,
11531157
67D916812838E2460098D3CB /* DialogListView.swift in Sources */,
@@ -1433,7 +1437,7 @@
14331437
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
14341438
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
14351439
CODE_SIGN_STYLE = Automatic;
1436-
CURRENT_PROJECT_VERSION = 2;
1440+
CURRENT_PROJECT_VERSION = 3;
14371441
DEVELOPMENT_ASSET_PATHS = "SwiftUI-WorkoutApp/Preview\\ Content/PreviewContent.swift SwiftUI-WorkoutApp/Preview\\ Content";
14381442
DEVELOPMENT_TEAM = CR68PP2Z3F;
14391443
ENABLE_PREVIEWS = YES;
@@ -1469,7 +1473,7 @@
14691473
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
14701474
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
14711475
CODE_SIGN_STYLE = Automatic;
1472-
CURRENT_PROJECT_VERSION = 2;
1476+
CURRENT_PROJECT_VERSION = 3;
14731477
DEVELOPMENT_ASSET_PATHS = "SwiftUI-WorkoutApp/Preview\\ Content/PreviewContent.swift SwiftUI-WorkoutApp/Preview\\ Content";
14741478
DEVELOPMENT_TEAM = CR68PP2Z3F;
14751479
ENABLE_PREVIEWS = YES;
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import SafariServices
2+
import SwiftUI
3+
4+
struct SafariVCRepresentable: UIViewControllerRepresentable {
5+
let url: URL
6+
7+
func makeUIViewController(context _: Context) -> SFSafariViewController {
8+
.init(url: url)
9+
}
10+
11+
func updateUIViewController(_: SFSafariViewController, context _: Context) {}
12+
}
13+
14+
#if DEBUG
15+
struct SafariVCRepresentable_Previews: PreviewProvider {
16+
static var previews: some View {
17+
SafariVCRepresentable(url: Constants.accountCreationURL)
18+
}
19+
}
20+
#endif

SwiftUI-WorkoutApp/Screens/Profile/IncognitoProfileView.swift

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import SwiftUI
22

33
/// Заглушка для неавторизованного пользователя
44
struct IncognitoProfileView: View {
5+
@State private var openRegistrationPage = false
6+
57
var body: some View {
68
VStack(spacing: 16) {
79
incognitoInformer
@@ -26,9 +28,14 @@ private extension IncognitoProfileView {
2628
}
2729

2830
var createAccountButton: some View {
29-
Link(destination: Constants.accountCreationURL) {
31+
Button {
32+
openRegistrationPage.toggle()
33+
} label: {
3034
IncognitoUserButton.Mode.register(inForm: false).label
3135
}
36+
.sheet(isPresented: $openRegistrationPage) {
37+
SafariVCRepresentable(url: Constants.accountCreationURL)
38+
}
3239
}
3340
}
3441

SwiftUI-WorkoutApp/Screens/Profile/Settings/ProfileSettingsView.swift

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import SwiftUI
44
struct ProfileSettingsView: View {
55
@EnvironmentObject private var defaults: DefaultsService
66
@StateObject private var viewModel = ProfileSettingsViewModel()
7+
@State private var openRegistrationPage = false
78
@State private var showLogoutDialog = false
89
@State private var showDeleteProfileDialog = false
910
@State private var showErrorAlert = false
@@ -137,10 +138,15 @@ private extension ProfileSettingsView {
137138
}
138139

139140
var registerButton: some View {
140-
Link(destination: Constants.accountCreationURL) {
141+
Button {
142+
openRegistrationPage.toggle()
143+
} label: {
141144
IncognitoUserButton.Mode.register(inForm: true).label
142145
.font(.system(.body).bold())
143146
}
147+
.sheet(isPresented: $openRegistrationPage) {
148+
SafariVCRepresentable(url: Constants.accountCreationURL)
149+
}
144150
}
145151

146152
var authorizeButton: some View {

0 commit comments

Comments
 (0)