Skip to content

Commit f58085d

Browse files
authored
Merge pull request #185 from mattrubin/acknowledgements
Add an in-app Acknowledgements screen
2 parents 14be1b8 + dc6ea90 commit f58085d

16 files changed

+287
-167
lines changed

.swiftlint.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ disabled_rules:
2727
- line_length
2828
- todo
2929

30+
cyclomatic_complexity:
31+
warning: 15
32+
3033
trailing_comma:
3134
mandatory_comma: true
3235

Authenticator.xcodeproj/project.pbxproj

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
1D3623260D0F684500981E51 /* OTPAppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* OTPAppDelegate.swift */; };
1111
8B0028B511EB75920092DE18 /* ScannerOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B0028B411EB75920092DE18 /* ScannerOverlayView.swift */; };
1212
C910ADC11BF0315A00C988F5 /* TokenList.swift in Sources */ = {isa = PBXBuildFile; fileRef = C910ADC01BF0315A00C988F5 /* TokenList.swift */; };
13+
C9204A851E886A3500998D3E /* Acknowledgements.html in Resources */ = {isa = PBXBuildFile; fileRef = C9204A841E886A3500998D3E /* Acknowledgements.html */; };
1314
C92708AC19CFB0750033128B /* TokenListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C92708AB19CFB0750033128B /* TokenListViewController.swift */; };
1415
C93AD15219CD51BE007480E9 /* Colors.swift in Sources */ = {isa = PBXBuildFile; fileRef = C93AD15119CD51BE007480E9 /* Colors.swift */; };
1516
C93BD6231C167CD100FFFB8F /* Root.swift in Sources */ = {isa = PBXBuildFile; fileRef = C93BD6221C167CD100FFFB8F /* Root.swift */; };
@@ -18,7 +19,6 @@
1819
C944A5571A7ECB0800E08B1E /* OneTimePassword.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = C944A5561A7ECB0800E08B1E /* OneTimePassword.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
1920
C944A5591A7ECB3100E08B1E /* Base32.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = C944A5581A7ECB3100E08B1E /* Base32.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
2021
C968D1151CB4C639004ED7BB /* DisplayTime.swift in Sources */ = {isa = PBXBuildFile; fileRef = C968D1141CB4C639004ED7BB /* DisplayTime.swift */; };
21-
C97B68C717D9226D005D1FE0 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = C97B68C617D9226D005D1FE0 /* Settings.bundle */; };
2222
C97CDF261BEEA66A00D64406 /* SVProgressHUD.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = C97CDF241BEEA49300D64406 /* SVProgressHUD.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
2323
C97CDF2C1BEEC90100D64406 /* QRScanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = C97CDF2B1BEEC90100D64406 /* QRScanner.swift */; };
2424
C983AB74197F98FC00975003 /* OTPAuthenticatorTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C983AB73197F98FC00975003 /* OTPAuthenticatorTests.m */; };
@@ -31,8 +31,8 @@
3131
C9919CE01BA721A1006237C1 /* ButtonHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9919CDF1BA721A1006237C1 /* ButtonHeaderView.swift */; };
3232
C9919CE21BA733FD006237C1 /* Section.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9919CE11BA733FD006237C1 /* Section.swift */; };
3333
C99B85251BC9AB7100A6C75D /* BarButtonViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C99B85241BC9AB7100A6C75D /* BarButtonViewModel.swift */; };
34-
C9A1C1A61E501CB2009E65D6 /* BackupInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9A1C1A51E501CB2009E65D6 /* BackupInfoViewController.swift */; };
35-
C9A1C1A91E501D8B009E65D6 /* BackupInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9A1C1A81E501D8B009E65D6 /* BackupInfo.swift */; };
34+
C9A1C1A61E501CB2009E65D6 /* InfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9A1C1A51E501CB2009E65D6 /* InfoViewController.swift */; };
35+
C9A1C1A91E501D8B009E65D6 /* Info.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9A1C1A81E501D8B009E65D6 /* Info.swift */; };
3636
C9A1C1AC1E5021A6009E65D6 /* BackupInfo.html in Resources */ = {isa = PBXBuildFile; fileRef = C9A1C1AA1E502195009E65D6 /* BackupInfo.html */; };
3737
C9A1C1CE1E6CDBFB009E65D6 /* RootTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9A1C1CD1E6CDBFB009E65D6 /* RootTests.swift */; };
3838
C9A262D01E170BD4004E6CEB /* AuthenticatorScreenshots.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9A262CF1E170BD4004E6CEB /* AuthenticatorScreenshots.swift */; };
@@ -105,6 +105,7 @@
105105
8B2B8AE1118BA49F00437315 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.md; sourceTree = "<group>"; };
106106
8BF5147F118799AE005C936F /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
107107
C910ADC01BF0315A00C988F5 /* TokenList.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TokenList.swift; sourceTree = "<group>"; };
108+
C9204A841E886A3500998D3E /* Acknowledgements.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = Acknowledgements.html; sourceTree = "<group>"; };
108109
C92708AB19CFB0750033128B /* TokenListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TokenListViewController.swift; sourceTree = "<group>"; };
109110
C931A5FC1BFF6F9D00706A1C /* .hound.yml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = .hound.yml; sourceTree = "<group>"; };
110111
C931A5FE1BFF6FA600706A1C /* .swiftlint.yml */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = text; path = .swiftlint.yml; sourceTree = "<group>"; usesTabs = 0; };
@@ -133,7 +134,6 @@
133134
C968D1141CB4C639004ED7BB /* DisplayTime.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DisplayTime.swift; sourceTree = "<group>"; };
134135
C96E60561DBC5F1B00484823 /* .codecov.yml */ = {isa = PBXFileReference; lastKnownFileType = text; path = .codecov.yml; sourceTree = "<group>"; };
135136
C9776E3318518801003D53CB /* LICENSE.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE.txt; sourceTree = "<group>"; };
136-
C97B68C617D9226D005D1FE0 /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Settings.bundle; sourceTree = "<group>"; };
137137
C97CDF041BEE927200D64406 /* AUTHORS */ = {isa = PBXFileReference; lastKnownFileType = text; path = AUTHORS; sourceTree = "<group>"; };
138138
C97CDF241BEEA49300D64406 /* SVProgressHUD.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = SVProgressHUD.framework; sourceTree = BUILT_PRODUCTS_DIR; };
139139
C97CDF2B1BEEC90100D64406 /* QRScanner.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QRScanner.swift; sourceTree = "<group>"; };
@@ -149,9 +149,9 @@
149149
C9919CDF1BA721A1006237C1 /* ButtonHeaderView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ButtonHeaderView.swift; sourceTree = "<group>"; };
150150
C9919CE11BA733FD006237C1 /* Section.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Section.swift; sourceTree = "<group>"; };
151151
C99B85241BC9AB7100A6C75D /* BarButtonViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BarButtonViewModel.swift; sourceTree = "<group>"; };
152-
C9A1C1A51E501CB2009E65D6 /* BackupInfoViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BackupInfoViewController.swift; sourceTree = "<group>"; };
153-
C9A1C1A81E501D8B009E65D6 /* BackupInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BackupInfo.swift; sourceTree = "<group>"; };
154-
C9A1C1AA1E502195009E65D6 /* BackupInfo.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = BackupInfo.html; path = ../Resources/BackupInfo.html; sourceTree = "<group>"; };
152+
C9A1C1A51E501CB2009E65D6 /* InfoViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InfoViewController.swift; sourceTree = "<group>"; };
153+
C9A1C1A81E501D8B009E65D6 /* Info.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Info.swift; sourceTree = "<group>"; };
154+
C9A1C1AA1E502195009E65D6 /* BackupInfo.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = BackupInfo.html; sourceTree = "<group>"; };
155155
C9A1C1CD1E6CDBFB009E65D6 /* RootTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RootTests.swift; sourceTree = "<group>"; };
156156
C9A262CD1E170BD4004E6CEB /* AuthenticatorScreenshots.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AuthenticatorScreenshots.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
157157
C9A262CF1E170BD4004E6CEB /* AuthenticatorScreenshots.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticatorScreenshots.swift; sourceTree = "<group>"; };
@@ -223,7 +223,7 @@
223223
C98C1C4917D2F03400A07D3F /* Token List */,
224224
C9B0B9501BC9159300BD5844 /* Forms */,
225225
C97CDF2D1BEF10B300D64406 /* Scanner */,
226-
C9A1C1A71E501D5F009E65D6 /* BackupInfo */,
226+
C9A1C1A71E501D5F009E65D6 /* Info */,
227227
C98C1C4E17D2F14500A07D3F /* Utility */,
228228
);
229229
path = Source;
@@ -259,11 +259,12 @@
259259
29B97317FDCFA39411CA2CEA /* Resources */ = {
260260
isa = PBXGroup;
261261
children = (
262+
C9204A841E886A3500998D3E /* Acknowledgements.html */,
263+
C9A1C1AA1E502195009E65D6 /* BackupInfo.html */,
262264
8BF5147F118799AE005C936F /* Info.plist */,
263265
C9F75C921843CFFD00B6FA14 /* App Icon */,
264266
C9C6CCA11842E331000100C2 /* Images.xcassets */,
265267
C9BEAE5F19C67FD800533385 /* LaunchScreen.xib */,
266-
C97B68C617D9226D005D1FE0 /* Settings.bundle */,
267268
);
268269
path = Resources;
269270
sourceTree = "<group>";
@@ -429,14 +430,13 @@
429430
path = AuthenticatorTests;
430431
sourceTree = "<group>";
431432
};
432-
C9A1C1A71E501D5F009E65D6 /* BackupInfo */ = {
433+
C9A1C1A71E501D5F009E65D6 /* Info */ = {
433434
isa = PBXGroup;
434435
children = (
435-
C9A1C1A81E501D8B009E65D6 /* BackupInfo.swift */,
436-
C9A1C1A51E501CB2009E65D6 /* BackupInfoViewController.swift */,
437-
C9A1C1AA1E502195009E65D6 /* BackupInfo.html */,
436+
C9A1C1A81E501D8B009E65D6 /* Info.swift */,
437+
C9A1C1A51E501CB2009E65D6 /* InfoViewController.swift */,
438438
);
439-
name = BackupInfo;
439+
name = Info;
440440
sourceTree = "<group>";
441441
};
442442
C9A262CE1E170BD4004E6CEB /* AuthenticatorScreenshots */ = {
@@ -607,9 +607,9 @@
607607
buildActionMask = 2147483647;
608608
files = (
609609
C9A1C1AC1E5021A6009E65D6 /* BackupInfo.html in Resources */,
610+
C9204A851E886A3500998D3E /* Acknowledgements.html in Resources */,
610611
C9BEAE6019C67FD800533385 /* LaunchScreen.xib in Resources */,
611612
C9C6CCA21842E331000100C2 /* Images.xcassets in Resources */,
612-
C97B68C717D9226D005D1FE0 /* Settings.bundle in Resources */,
613613
);
614614
runOnlyForDeploymentPostprocessing = 0;
615615
};
@@ -663,11 +663,11 @@
663663
C97CDF2C1BEEC90100D64406 /* QRScanner.swift in Sources */,
664664
C9AAB07F1B917EC3000CE547 /* TokenEditForm.swift in Sources */,
665665
C9D6C84C19075044004F0E08 /* OTPProgressRing.swift in Sources */,
666-
C9A1C1A91E501D8B009E65D6 /* BackupInfo.swift in Sources */,
666+
C9A1C1A91E501D8B009E65D6 /* Info.swift in Sources */,
667667
C9CC09531BA9133B008C54FE /* FocusCell.swift in Sources */,
668668
C99069D1180CBAC900BAEF53 /* TokenScannerViewController.swift in Sources */,
669669
C9EB448E1C52A74200ACFA87 /* Component.swift in Sources */,
670-
C9A1C1A61E501CB2009E65D6 /* BackupInfoViewController.swift in Sources */,
670+
C9A1C1A61E501CB2009E65D6 /* InfoViewController.swift in Sources */,
671671
C9D6C83F1906BD68004F0E08 /* SegmentedControlRow.swift in Sources */,
672672
C968D1151CB4C639004ED7BB /* DisplayTime.swift in Sources */,
673673
8B0028B511EB75920092DE18 /* ScannerOverlayView.swift in Sources */,
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
<html>
2+
<head>
3+
<meta name="viewport" content="width=device-width, initial-scale=1">
4+
<style>
5+
body {
6+
background-color: rgb(35, 35, 50);
7+
color: rgb(250, 248, 240);
8+
font-family: system, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Lucida Grande";
9+
margin: 10px 20px 20px 20px;
10+
}
11+
h1, h2, h3 {
12+
font-weight: 500;
13+
font-size: 14pt;
14+
}
15+
p {
16+
font-size: 11pt;
17+
font-weight: 300;
18+
line-height: 1.5;
19+
}
20+
a {
21+
color: rgb(250, 248, 240);
22+
}
23+
</style>
24+
</head>
25+
<body>
26+
<p>Authenticator makes use of the following third party libraries:</p>
27+
28+
<h2><a href="https://github.com/ekscrypto/Base32">
29+
Base32
30+
</a></h2>
31+
<p>Public Domain</p>
32+
33+
<h2><a href="https://github.com/mattrubin/OneTimePassword">
34+
OneTimePassword
35+
</a></h2>
36+
<p>Copyright (c) 2013-2016 Matt Rubin and the OneTimePassword authors</p>
37+
<p>Permission is hereby granted, free of charge, to any person obtaining a copy
38+
of this software and associated documentation files (the "Software"), to deal
39+
in the Software without restriction, including without limitation the rights
40+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
41+
copies of the Software, and to permit persons to whom the Software is
42+
furnished to do so, subject to the following conditions:</p>
43+
<p>The above copyright notice and this permission notice shall be included in all
44+
copies or substantial portions of the Software.</p>
45+
<p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
46+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
47+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
48+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
49+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
50+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
51+
SOFTWARE.</p>
52+
53+
<h2><a href="https://github.com/SVProgressHUD/SVProgressHUD">
54+
SVProgressHUD
55+
</a></h2>
56+
<p>Copyright (c) 2011-2016 Sam Vermette, Tobias Tiemerding and contributors.</p>
57+
<p>Permission is hereby granted, free of charge, to any person
58+
obtaining a copy of this software and associated documentation
59+
files (the "Software"), to deal in the Software without
60+
restriction, including without limitation the rights to use,
61+
copy, modify, merge, publish, distribute, sublicense, and/or sell
62+
copies of the Software, and to permit persons to whom the
63+
Software is furnished to do so, subject to the following
64+
conditions:</p>
65+
<p>The above copyright notice and this permission notice shall be
66+
included in all copies or substantial portions of the Software.</p>
67+
<p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
68+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
69+
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
70+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
71+
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
72+
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
73+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
74+
OTHER DEALINGS IN THE SOFTWARE.</p>
75+
76+
<h2><a href="https://github.com/jspahrsummers/xcconfigs">
77+
xcconfigs
78+
</a></h2>
79+
<p>This is free and unencumbered software released into the public domain.</p>
80+
<p>Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means.</p>
81+
<p>In jurisdictions that recognize copyright laws, the author or authors of this software dedicate any and all copyright interest in the software to the public domain. We make this dedication for the benefit of the public at large and to the detriment of our heirs and successors. We intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law.</p>
82+
<p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</p>
83+
<p>For more information, please refer to unlicense.org.</p>
84+
</body>
85+
</html>

Authenticator/Resources/BackupInfo.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
font-family: system, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Lucida Grande";
99
margin: 10px 20px 20px 20px;
1010
}
11-
h1 {
12-
font-weight: thin;
11+
h1, h2, h3 {
12+
font-weight: 500;
1313
}
1414
p {
1515
font-size: 13pt;

0 commit comments

Comments
 (0)