diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index 0f3da3a13..ecde1bcc5 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -12,7 +12,7 @@ CoreDataStack.xcscheme_^#shared#^_ orderHint - 21 + 20 Mastodon - ASDK.xcscheme_^#shared#^_ @@ -37,7 +37,7 @@ NotificationService.xcscheme_^#shared#^_ orderHint - 20 + 21 SuppressBuildableAutocreation diff --git a/Mastodon/Resources/Assets.xcassets/Asset/email.imageset/Contents.json b/Mastodon/Resources/Assets.xcassets/Asset/email.imageset/Contents.json index ae4670472..ba3df05b6 100644 --- a/Mastodon/Resources/Assets.xcassets/Asset/email.imageset/Contents.json +++ b/Mastodon/Resources/Assets.xcassets/Asset/email.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "mastodon.with.mail.svg", + "filename" : "c1 1.svg", "idiom" : "universal" } ], diff --git a/Mastodon/Resources/Assets.xcassets/Asset/email.imageset/mastodon.with.mail.svg b/Mastodon/Resources/Assets.xcassets/Asset/email.imageset/c1 1.svg similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Asset/email.imageset/mastodon.with.mail.svg rename to Mastodon/Resources/Assets.xcassets/Asset/email.imageset/c1 1.svg diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift index 69eff4a82..7c1f79dbd 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift @@ -31,7 +31,11 @@ extension HomeTimelineViewController { guard let self = self else { return } self.showWelcomeAction(action) }, - UIAction(title: "Show Or Remove EmptyView", image: UIImage(systemName: "clear"), attributes: []) { [weak self] action in + UIAction(title: "Show Confirm Email", image: UIImage(systemName: "envelope"), attributes: []) { [weak self] action in + guard let self = self else { return } + self.showConfirmEmail(action) + }, + UIAction(title: "Toggle EmptyView", image: UIImage(systemName: "clear"), attributes: []) { [weak self] action in guard let self = self else { return } if self.emptyView.superview != nil { self.emptyView.removeFromSuperview() @@ -310,6 +314,11 @@ extension HomeTimelineViewController { @objc private func showWelcomeAction(_ sender: UIAction) { coordinator.present(scene: .welcome, from: self, transition: .modal(animated: true, completion: nil)) } + + @objc private func showConfirmEmail(_ sender: UIAction) { + let mastodonConfirmEmailViewModel = MastodonConfirmEmailViewModel() + coordinator.present(scene: .mastodonConfirmEmail(viewModel: mastodonConfirmEmailViewModel), from: nil, transition: .modal(animated: true, completion: nil)) + } @objc private func showPublicTimelineAction(_ sender: UIAction) { coordinator.present(scene: .publicTimeline, from: self, transition: .show) diff --git a/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewModel.swift b/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewModel.swift index 9fbd24eda..7ddcefbbf 100644 --- a/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewModel.swift +++ b/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewModel.swift @@ -37,4 +37,17 @@ final class MastodonConfirmEmailViewModel { self.userToken = userToken self.updateCredentialQuery = updateCredentialQuery } + + #if DEBUG + init() { + self.context = AppContext.shared + self.email = "example.com" + self.authenticateInfo = AuthenticationViewModel.AuthenticateInfo( + domain: "", + application: Mastodon.Entity.Application(name: "", website: nil, vapidKey: nil, redirectURI: nil, clientID: "clientID", clientSecret: "clientSecret") + )! + self.userToken = Mastodon.Entity.Token(accessToken: "", tokenType: "", scope: "", createdAt: Date()) + self.updateCredentialQuery = Mastodon.API.Account.UpdateCredentialQuery(discoverable: nil, bot: nil, displayName: nil, note: nil, avatar: nil, header: nil, locked: nil, source: nil, fieldsAttributes: nil) + } + #endif } diff --git a/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Application.swift b/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Application.swift index d7d4dda4d..e6f6300e6 100644 --- a/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Application.swift +++ b/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Application.swift @@ -17,7 +17,7 @@ extension Mastodon.Entity { /// # Reference /// [Document](https://docs.joinmastodon.org/entities/application/) public struct Application: Codable { - + public let name: String public let website: String? @@ -27,6 +27,15 @@ extension Mastodon.Entity { public let redirectURI: String? // undocumented public let clientID: String? public let clientSecret: String? + + public init(name: String, website: String?, vapidKey: String?, redirectURI: String?, clientID: String?, clientSecret: String?) { + self.name = name + self.website = website + self.vapidKey = vapidKey + self.redirectURI = redirectURI + self.clientID = clientID + self.clientSecret = clientSecret + } enum CodingKeys: String, CodingKey { case name diff --git a/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Token.swift b/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Token.swift index e7f18b518..ff305e104 100644 --- a/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Token.swift +++ b/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Token.swift @@ -17,10 +17,18 @@ extension Mastodon.Entity { /// # Reference /// [Document](https://docs.joinmastodon.org/entities/token/) public struct Token: Codable { + public let accessToken: String public let tokenType: String public let scope: String public let createdAt: Date + + public init(accessToken: String, tokenType: String, scope: String, createdAt: Date) { + self.accessToken = accessToken + self.tokenType = tokenType + self.scope = scope + self.createdAt = createdAt + } enum CodingKeys: String, CodingKey { case accessToken = "access_token"