Skip to content

Commit

Permalink
Upgrade to Swift 5.3
Browse files Browse the repository at this point in the history
  • Loading branch information
sindresorhus committed Sep 16, 2020
1 parent 6f934d2 commit 7e1a6c9
Show file tree
Hide file tree
Showing 16 changed files with 108 additions and 109 deletions.
1 change: 0 additions & 1 deletion .swiftlint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,6 @@ whitelist_rules:
- unneeded_parentheses_in_closure_argument
- unowned_variable_capture
- untyped_error_in_catch
- unused_capture_list
- unused_closure_parameter
- unused_control_flow_label
- unused_enumerated
Expand Down
8 changes: 5 additions & 3 deletions Plash.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
archiveVersion = 1;
classes = {
};
objectVersion = 53;
objectVersion = 54;
objects = {

/* Begin PBXBuildFile section */
Expand Down Expand Up @@ -203,7 +203,7 @@
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 1120;
LastUpgradeCheck = 1130;
LastUpgradeCheck = 1200;
ORGANIZATIONNAME = "Sindre Sorhus";
TargetAttributes = {
E324212F2384E9D700D28A91 = {
Expand All @@ -212,7 +212,7 @@
};
};
buildConfigurationList = E324212B2384E9D700D28A91 /* Build configuration list for PBXProject "Plash" */;
compatibilityVersion = "Xcode 11.4";
compatibilityVersion = "Xcode 12.0";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
Expand Down Expand Up @@ -350,6 +350,7 @@
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
Expand Down Expand Up @@ -410,6 +411,7 @@
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
Expand Down
2 changes: 1 addition & 1 deletion Plash.xcodeproj/xcshareddata/xcschemes/Plash.xcscheme
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1130"
LastUpgradeVersion = "1200"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
Expand Down
11 changes: 6 additions & 5 deletions Plash/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -111,8 +111,8 @@ final class AppDelegate: NSObject, NSApplicationDelegate {
return
}

reloadTimer = Timer.scheduledTimer(withTimeInterval: reloadInterval, repeats: true) { _ in
self.loadUserURL()
reloadTimer = Timer.scheduledTimer(withTimeInterval: reloadInterval, repeats: true) { [self] _ in
loadUserURL()
}
}

Expand Down Expand Up @@ -160,8 +160,8 @@ final class AppDelegate: NSObject, NSApplicationDelegate {

// TODO: Add a callback to `loadURL` when it's done loading instead.
// TODO: Fade in the web view.
delay(seconds: 1) {
self.desktopWindow.contentView?.isHidden = false
delay(seconds: 1) { [self] in
desktopWindow.contentView?.isHidden = false
}
}

Expand All @@ -185,8 +185,9 @@ final class AppDelegate: NSObject, NSApplicationDelegate {
panel.directoryURL = url
}

panel.begin {
panel.begin { [weak self] in
guard
let self = self,
$0 == .OK,
let url = panel.url
else {
Expand Down
19 changes: 7 additions & 12 deletions Plash/Assets.xcassets/MenuBarIcon.imageset/Contents.json
Original file line number Diff line number Diff line change
@@ -1,21 +1,16 @@
{
"images" : [
{
"idiom" : "mac",
"scale" : "1x"
},
{
"idiom" : "mac",
"filename" : "MenuBarIcon.pdf",
"scale" : "2x"
"filename" : "MenuBarIcon.svg",
"idiom" : "universal"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template",
"preserves-vector-representation" : true
"preserves-vector-representation" : true,
"template-rendering-intent" : "template"
}
}
}
Binary file not shown.
1 change: 1 addition & 0 deletions Plash/Assets.xcassets/MenuBarIcon.imageset/MenuBarIcon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
70 changes: 35 additions & 35 deletions Plash/Events.swift
Original file line number Diff line number Diff line change
Expand Up @@ -4,95 +4,95 @@ import KeyboardShortcuts

extension AppDelegate {
func setUpEvents() {
menu.onUpdate = { _ in
self.updateMenu()
menu.onUpdate = { [self] _ in
updateMenu()
}

webViewController.onLoaded = { error in
self.webViewError = error
webViewController.onLoaded = { [self] error in
webViewError = error

guard error == nil else {
return
}

// Set the persisted zoom level.
let zoomLevel = self.webViewController.webView.zoomLevelWrapper
let zoomLevel = webViewController.webView.zoomLevelWrapper
if zoomLevel != 1 {
self.webViewController.webView.zoomLevelWrapper = zoomLevel
webViewController.webView.zoomLevelWrapper = zoomLevel
}

if let url = Defaults[.url] {
let title = self.webViewController.webView.title.map { "\($0)\n" } ?? ""
let title = webViewController.webView.title.map { "\($0)\n" } ?? ""
let urlString = url.isFileURL ? url.lastPathComponent : url.absoluteString
self.statusItemButton.toolTip = "\(title)\(urlString)"
statusItemButton.toolTip = "\(title)\(urlString)"
} else {
self.statusItemButton.toolTip = ""
statusItemButton.toolTip = ""
}
}

powerSourceWatcher?.onChange = { _ in
powerSourceWatcher?.onChange = { [self] _ in
guard Defaults[.deactivateOnBattery] else {
return
}

self.setEnabledStatus()
setEnabledStatus()
}

NSWorkspace.shared.notificationCenter
.publisher(for: NSWorkspace.didWakeNotification)
.sink { _ in
self.loadUserURL()
.sink { [self] _ in
loadUserURL()
}
.store(in: &cancellables)

Defaults.observe(.url, options: []) { change in
self.resetTimer()
self.loadURL(change.newValue)
Defaults.observe(.url, options: []) { [self] change in
resetTimer()
loadURL(change.newValue)
}
.tieToLifetime(of: self)

Defaults.observe(.opacity) { change in
self.isBrowsingMode = false
self.desktopWindow.alphaValue = CGFloat(change.newValue)
Defaults.observe(.opacity) { [self] change in
isBrowsingMode = false
desktopWindow.alphaValue = CGFloat(change.newValue)
}
.tieToLifetime(of: self)

Defaults.observe(.reloadInterval) { _ in
self.resetTimer()
Defaults.observe(.reloadInterval) { [self] _ in
resetTimer()
}
.tieToLifetime(of: self)

Defaults.observe(.display, options: []) { change in
self.desktopWindow.targetScreen = change.newValue.screen
Defaults.observe(.display, options: []) { [self] change in
desktopWindow.targetScreen = change.newValue.screen
}
.tieToLifetime(of: self)

Defaults.observe(.invertColors, options: []) { _ in
self.recreateWebViewAndReload()
Defaults.observe(.invertColors, options: []) { [self] _ in
recreateWebViewAndReload()
}
.tieToLifetime(of: self)

Defaults.observe(.customCSS, options: []) { _ in
self.recreateWebViewAndReload()
Defaults.observe(.customCSS, options: []) { [self] _ in
recreateWebViewAndReload()
}
.tieToLifetime(of: self)

Defaults.observe(.deactivateOnBattery) { _ in
self.setEnabledStatus()
Defaults.observe(.deactivateOnBattery) { [self] _ in
setEnabledStatus()
}
.tieToLifetime(of: self)

Defaults.observe(.showOnAllSpaces) { change in
self.desktopWindow.collectionBehavior.toggleExistence(.canJoinAllSpaces, shouldExist: change.newValue)
Defaults.observe(.showOnAllSpaces) { [self] change in
desktopWindow.collectionBehavior.toggleExistence(.canJoinAllSpaces, shouldExist: change.newValue)
}
.tieToLifetime(of: self)

KeyboardShortcuts.onKeyUp(for: .toggleBrowsingMode) {
self.isBrowsingMode.toggle()
KeyboardShortcuts.onKeyUp(for: .toggleBrowsingMode) { [self] in
isBrowsingMode.toggle()
}

KeyboardShortcuts.onKeyUp(for: .reload) {
self.loadUserURL()
KeyboardShortcuts.onKeyUp(for: .reload) { [self] in
loadUserURL()
}
}
}
12 changes: 6 additions & 6 deletions Plash/Menus.swift
Original file line number Diff line number Diff line change
Expand Up @@ -111,8 +111,8 @@ extension AppDelegate {
key: "o",
keyModifiers: .option,
isEnabled: isEnabled
) { _ in
self.openLocalWebsite()
) { [weak self] _ in
self?.openLocalWebsite()
}

menu.addSeparator()
Expand All @@ -121,17 +121,17 @@ extension AppDelegate {
"Reload",
key: "r",
isEnabled: isEnabled && Defaults[.url] != nil
) { _ in
self.loadUserURL()
) { [weak self] _ in
self?.loadUserURL()
}

menu.addCallbackItem(
"Browsing Mode",
key: "b",
isEnabled: isEnabled && Defaults[.url] != nil,
isChecked: isBrowsingMode
) { _ in
self.isBrowsingMode.toggle()
) { [weak self] _ in
self?.isBrowsingMode.toggle()
}

menu.addSeparator()
Expand Down
8 changes: 5 additions & 3 deletions Plash/OpenURLView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ struct OpenURLView: View {
HStack(spacing: 3) {
Text("You could, for example,")
Button("show the time.") {
self.urlString = "https://time.pablopunk.com/?seconds&fg=white&bg=transparent"
urlString = "https://time.pablopunk.com/?seconds&fg=white&bg=transparent"
}
.buttonStyle(LinkButtonStyle())
}
Expand All @@ -44,17 +44,19 @@ struct OpenURLView: View {
"sindresorhus.com",
// `removingNewlines` is a workaround for a SwiftUI bug where it doesn't respect the line limit when pasting in multiple lines.
// TODO: Report to Apple.
// TODO: Check if it's fixed on macOS 11.
text: $urlString.setMap(\.removingNewlines)
)
.lineLimit(1)
.frame(minWidth: 400)
.padding(.vertical)
// TODO: Use `Button` when targeting macOS 11.
NativeButton("Open", keyEquivalent: .return) {
guard let url = URL(string: self.normalizedUrlString) else {
guard let url = URL(string: normalizedUrlString) else {
return
}

self.loadHandler(url)
loadHandler(url)
}
.disabled(!URL.isValid(string: normalizedUrlString))
}
Expand Down
2 changes: 1 addition & 1 deletion Plash/PreferencesView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ private struct ClearWebsiteDataPreference: View {

var body: some View {
Button("Clear Website Data") {
self.hasCleared = true
hasCleared = true
AppDelegate.shared.webViewController.webView.clearWebsiteData(completion: nil)
}
.disabled(hasCleared)
Expand Down
16 changes: 8 additions & 8 deletions Plash/SSWebView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -58,16 +58,16 @@ final class SSWebView: WKWebView {

menu.addSeparator()

menu.addCallbackItem("Actual Size", isEnabled: zoomLevel != 1) { _ in
self.zoomLevelWrapper = 1
menu.addCallbackItem("Actual Size", isEnabled: zoomLevel != 1) { [weak self] _ in
self?.zoomLevelWrapper = 1
}

menu.addCallbackItem("Zoom In") { _ in
self.zoomLevelWrapper += 0.2
menu.addCallbackItem("Zoom In") { [weak self] _ in
self?.zoomLevelWrapper += 0.2
}

menu.addCallbackItem("Zoom Out") { _ in
self.zoomLevelWrapper -= 0.2
menu.addCallbackItem("Zoom Out") { [weak self] _ in
self?.zoomLevelWrapper -= 0.2
}

// Move the “Inspect Element” menu item to the end.
Expand All @@ -84,7 +84,7 @@ final class SSWebView: WKWebView {
extension SSWebView {
// TODO: Use https://developer.apple.com/documentation/webkit/wkwebview/3516411-pagezoom instead when macOS 10.15.4 is out.
private var zoomLevelDefaultsKey: Defaults.Key<Double?>? {
guard let url = self.url?.normalized(removeFragment: true, removeQuery: true) else {
guard let url = url?.normalized(removeFragment: true, removeQuery: true) else {
return nil
}

Expand All @@ -93,7 +93,7 @@ extension SSWebView {

var zoomLevelDefaultsValue: Double? {
guard
let zoomLevelDefaultsKey = self.zoomLevelDefaultsKey,
let zoomLevelDefaultsKey = zoomLevelDefaultsKey,
let zoomLevel = Defaults[zoomLevelDefaultsKey]
else {
return nil
Expand Down
Loading

0 comments on commit 7e1a6c9

Please sign in to comment.