-
Notifications
You must be signed in to change notification settings - Fork 384
/
Copy pathIPOverrideTextViewController.swift
83 lines (69 loc) · 2.44 KB
/
IPOverrideTextViewController.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
//
// IPOverrideTextViewController.swift
// MullvadVPN
//
// Created by Jon Petersson on 2024-01-16.
// Copyright © 2024 Mullvad VPN AB. All rights reserved.
//
import UIKit
class IPOverrideTextViewController: UIViewController {
private let interactor: IPOverrideInteractor
private var textView = CustomTextView()
private lazy var importButton: UIBarButtonItem = {
return UIBarButtonItem(
title: NSLocalizedString(
"IMPORT_TEXT_IMPORT_BUTTON",
tableName: "IPOverride",
value: "Import",
comment: ""
),
primaryAction: UIAction(handler: { [weak self] _ in
self?.interactor.import(text: self?.textView.text ?? "")
self?.dismiss(animated: true)
})
)
}()
init(interactor: IPOverrideInteractor) {
self.interactor = interactor
super.init(nibName: nil, bundle: nil)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .secondaryColor
navigationItem.title = NSLocalizedString(
"IMPORT_TEXT_NAVIGATION_TITLE",
tableName: "IPOverride",
value: "Import via text",
comment: ""
)
navigationItem.leftBarButtonItem = UIBarButtonItem(
systemItem: .cancel,
primaryAction: UIAction(handler: { [weak self] _ in
self?.dismiss(animated: true)
})
)
importButton.isEnabled = !textView.text.isEmpty
navigationItem.rightBarButtonItem = importButton
textView.becomeFirstResponder()
textView.delegate = self
textView.spellCheckingType = .no
textView.autocorrectionType = .no
textView.textColor = UIColor.label
textView.font = UIFont.monospacedSystemFont(
ofSize: UIFont.systemFont(ofSize: 14).pointSize,
weight: .regular
)
view.addConstrainedSubviews([textView]) {
textView.pinEdgesToSuperview(.all().excluding(.top))
textView.topAnchor.constraint(equalTo: view.layoutMarginsGuide.topAnchor, constant: 0)
}
}
}
extension IPOverrideTextViewController: UITextViewDelegate {
func textViewDidChange(_ textView: UITextView) {
importButton.isEnabled = !textView.text.isEmpty
}
}