Files
Lizaveta Malinouskaya 30d96f4d0b VPNDEV-1493 - refactoring
2021-11-09 11:57:56 +03:00

57 lines
1.9 KiB
Swift

//
// NotificationsPresenter.swift
// PrivadoVPN
//
// Created by Zhandos Bolatbekov on 11.01.2021.
// Copyright © 2021 Privado LLC. All rights reserved.
//
import Foundation
final class NotificationsPresenter: NotificationsControllerOutput, NavigationBarViewModuleOutput, NotificationNavBarOutput {
weak var viewInput: NotificationsControllerInput?
private weak var output: NotificationsModuleOutput?
private let notificationsStorage: NotificationsStorage
private let cellType: NotificationCellType
init(output: NotificationsModuleOutput?, cellType: NotificationCellType, notificationsStorage: NotificationsStorage) {
self.cellType = cellType
self.output = output
self.notificationsStorage = notificationsStorage
}
// MARK: - NotificationsControllerOutput
func viewIsReady() {
let linkAction: NotificationCellLinkAction = { [weak self] _ in
let extradata = CTAClick(screenType: CTAScreenType.messages).jsonString
CometLogger.shared.event(name: PrivadoConstants.Event.Statistic.Application.CTAClick, attributes: [PrivadoConstants.Event.Attributes.extradata: extradata], secured: nil)
// Route all messages to purchases list. Since appstore doesn't allow marketing urls.
self?.output?.navigate(to: .preference(tab: .upgrade))
}
let cells = self.notificationsStorage.notifications.map {
NotificationCellAdapter(with: self.cellType, notification: $0, linkAction: linkAction)
}
self.viewInput?.display(notificationCells: cells)
}
func backClick() {
self.output?.navigate(to: .back)
}
// MARK: - NavigationBarViewModuleOutput
func openPreviousScreen() {
self.output?.navigate(to: .back)
}
// MARK: - NotificationNavBarOutput
func didTapCloseButton() {
self.output?.navigate(to: .notifications)
}
}