From 48b655bc5c1d8f805b07fcb8221c92c3640aa329 Mon Sep 17 00:00:00 2001 From: Sumanth Nadigadda Date: Mon, 20 Mar 2023 12:24:00 +0530 Subject: [PATCH] Adding customizing fields in Notification controller. --- .../NotificationViewController.swift | 81 +++++++++++++++++-- 1 file changed, 73 insertions(+), 8 deletions(-) diff --git a/VDSSample/ViewControllers/NotificationViewController.swift b/VDSSample/ViewControllers/NotificationViewController.swift index 3103e66..0856eed 100644 --- a/VDSSample/ViewControllers/NotificationViewController.swift +++ b/VDSSample/ViewControllers/NotificationViewController.swift @@ -11,6 +11,16 @@ import VDS class NotificationViewController: BaseViewController { var notificationView = Notification() + let titleTextField = TextField() + let subTitleTextField = TextField() + let buttonGroupToggle = Toggle() + let firstButtonTextField = TextField() + let secondButtonTextField = TextField() + + let titleDefaultText = "This is title" + let subtitleDefaultText = "This is subtitle" + let firstButtonDefaultText = "Button 1" + let secondButtonDefaultText = "Button 2" lazy var notificationTypePickerSelectorView = { PickerSelectorView(title: "Info", @@ -21,14 +31,15 @@ class NotificationViewController: BaseViewController { override func viewDidLoad() { super.viewDidLoad() - notificationView.titleText = "Good morning" - notificationView.subTitleText = "SecondLabel information" - notificationView.primaryButtonModel = .init(text: "First", onClick: { button in - print("\(button.text!) button click") - }) - notificationView.secondaryButtonModel = .init(text: "Second", onClick: { button in - print("\(button.text!) button click") - }) + notificationView.titleText = titleDefaultText + notificationView.subTitleText = subtitleDefaultText + titleTextField.text = titleDefaultText + subTitleTextField.text = subtitleDefaultText + + setupButtons(with: firstButtonDefaultText, secondButtonText: secondButtonDefaultText) + firstButtonTextField.text = firstButtonDefaultText + secondButtonTextField.text = secondButtonDefaultText + addContentTopView(view: notificationView) setupForm() @@ -38,6 +49,46 @@ class NotificationViewController: BaseViewController { func setupForm() { addFormRow(label: "Surface", view: surfacePickerSelectorView) addFormRow(label: "Style", view: notificationTypePickerSelectorView) + addFormRow(label: "Title", view: titleTextField) + addFormRow(label: "SubTitle", view: subTitleTextField) + addFormRow(label: "Hide Button Group", view: buttonGroupToggle) + addFormRow(label: "First Button Text", view: firstButtonTextField) + addFormRow(label: "Second Button Text", view: secondButtonTextField) + + titleTextField.textPublisher.sink { newString in + self.notificationView.titleText = newString + }.store(in: &subscribers) + + subTitleTextField.textPublisher.sink { newString in + self.notificationView.subTitleText = newString + }.store(in: &subscribers) + + buttonGroupToggle.publisher(for: .valueChanged).sink { [weak self] toggle in + if toggle.isOn { + self?.notificationView.primaryButtonModel = nil + self?.notificationView.secondaryButtonModel = nil + } else { + self?.setupButtons(with: self?.firstButtonDefaultText, secondButtonText: self?.secondButtonDefaultText) + } + }.store(in: &subscribers) + + + firstButtonTextField.textPublisher.sink { newString in + + if newString.isEmpty { + self.notificationView.primaryButtonModel = nil + self.notificationView.secondaryButtonModel = nil + } else { + self.setupButtons(with: newString, secondButtonText: self.secondButtonTextField.text) + } + + }.store(in: &subscribers) + + secondButtonTextField.textPublisher.sink { newString in + if !(self.firstButtonTextField.text?.isEmpty ?? true){ + self.setupButtons(secondButtonText: newString) + } + }.store(in: &subscribers) } func setupPicker() { @@ -51,4 +102,18 @@ class NotificationViewController: BaseViewController { } } + + func setupButtons(with firstButtonText: String? = nil, secondButtonText: String? = nil) { + if let firstButtonText { + notificationView.primaryButtonModel = .init(text: firstButtonText, onClick: { button in + print("\(button.text!) button click") + }) + } + + if let secondButtonText { + notificationView.secondaryButtonModel = .init(text: secondButtonText, onClick: { button in + print("\(button.text!) button click") + }) + } + } }