Skip to content

Commit

Permalink
feat(Matomo): AIDiscoveryView events
Browse files Browse the repository at this point in the history
  • Loading branch information
valentinperignon committed Oct 6, 2023
1 parent fa04185 commit 7d35a62
Showing 1 changed file with 40 additions and 33 deletions.
73 changes: 40 additions & 33 deletions Mail/Views/AI Writer/AIDiscoveryView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,28 +16,48 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

import InfomaniakCoreUI
import InfomaniakDI
import MailCore
import MailResources
import SwiftUI

struct AIDiscoveryView: View {
@LazyInjectService private var matomo: MatomoUtils

@Environment(\.isCompactWindow) private var isCompactWindow
@Environment(\.dismiss) private var dismiss

@ObservedObject var aiModel: AIModel

var body: some View {
if isCompactWindow {
AIDiscoveryBottomSheetView(aiModel: aiModel)
} else {
AIDiscoveryAlertView(aiModel: aiModel)
Group {
if isCompactWindow {
AIDiscoveryBottomSheetView(tryButton: didTouchTryButton, laterButton: didTouchLaterButton)
} else {
AIDiscoveryAlertView(tryButton: didTouchTryButton, laterButton: didTouchLaterButton)
}
}
.onAppear {
UserDefaults.shared.shouldPresentAIFeature = false
}
}

private func didTouchTryButton() {
matomo.track(eventWithCategory: .aiWriter, name: "discoverTry")
dismiss()
aiModel.displayView(.prompt)
}

private func didTouchLaterButton() {
matomo.track(eventWithCategory: .aiWriter, name: "discoverLater")
dismiss()
}
}

struct AIDiscoveryBottomSheetView: View {
@Environment(\.dismiss) private var dismiss

@ObservedObject var aiModel: AIModel
let tryButton: () -> Void
let laterButton: () -> Void

var body: some View {
VStack(spacing: 32) {
Expand All @@ -51,30 +71,21 @@ struct AIDiscoveryBottomSheetView: View {
.textStyle(.bodySecondary)

VStack(spacing: UIPadding.medium) {
MailButton(label: MailResourcesStrings.Localizable.buttonTry) {
dismiss()
aiModel.displayView(.prompt)
}
.mailButtonFullWidth(true)

MailButton(label: MailResourcesStrings.Localizable.buttonLater) {
dismiss()
}
.mailButtonStyle(.link)
MailButton(label: MailResourcesStrings.Localizable.buttonTry, action: tryButton)
.mailButtonFullWidth(true)

MailButton(label: MailResourcesStrings.Localizable.buttonLater, action: laterButton)
.mailButtonStyle(.link)
}
}
.padding(.horizontal, value: .medium)
.padding(.top, value: .regular)
.onAppear {
UserDefaults.shared.shouldPresentAIFeature = false
}
}
}

struct AIDiscoveryAlertView: View {
@Environment(\.dismiss) private var dismiss

@ObservedObject var aiModel: AIModel
let tryButton: () -> Void
let laterButton: () -> Void

var body: some View {
VStack(spacing: UIPadding.medium) {
Expand All @@ -89,21 +100,17 @@ struct AIDiscoveryAlertView: View {

ModalButtonsView(
primaryButtonTitle: MailResourcesStrings.Localizable.buttonTry,
secondaryButtonTitle: MailResourcesStrings.Localizable.buttonLater
) {
dismiss()
aiModel.displayView(.prompt)
}
}
.onAppear {
UserDefaults.shared.shouldPresentAIFeature = false
secondaryButtonTitle: MailResourcesStrings.Localizable.buttonLater,
primaryButtonAction: tryButton,
secondaryButtonAction: laterButton
)
}
}
}

#Preview {
Group {
AIDiscoveryBottomSheetView(aiModel: AIModel(mailboxManager: PreviewHelper.sampleMailboxManager))
AIDiscoveryAlertView(aiModel: AIModel(mailboxManager: PreviewHelper.sampleMailboxManager))
AIDiscoveryBottomSheetView(tryButton: { /* Preview */ }, laterButton: { /* Preview */ })
AIDiscoveryAlertView(tryButton: { /* Preview */ }, laterButton: { /* Preview */ })
}
}

0 comments on commit 7d35a62

Please sign in to comment.