Skip to content

Commit 90b4ad3

Browse files
committed
Merge branch 'release/2022.1'
2 parents 52044a6 + e27a673 commit 90b4ad3

File tree

15 files changed

+107
-1016
lines changed

15 files changed

+107
-1016
lines changed

AbnormalMouse.xcworkspace/xcshareddata/swiftpm/Package.resolved

Lines changed: 10 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

AbnormalMouse/AbnormalMouse.xcodeproj/project.pbxproj

Lines changed: 51 additions & 199 deletions
Large diffs are not rendered by default.

AbnormalMouse/AbnormalMouse/App.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ struct TheApp: Domain {
6868
var purchaseManager: PurchaseManagerType
6969
var updater: Updater
7070
var activatorConflictChecker: ActivatorConflictChecker
71+
var launchAtLoginManager: LaunchAtLoginManagerType
7172

7273
let overrideControllers: [OverrideController]
7374
}
@@ -143,7 +144,8 @@ struct TheApp: Domain {
143144
persisted: $0.persisted,
144145
activatorConflictChecker: $0.activatorConflictChecker,
145146
purchaseManager: $0.purchaseManager,
146-
updater: $0.updater
147+
updater: $0.updater,
148+
launchAtLoginManager: $0.launchAtLoginManager
147149
)
148150
}
149151
}
@@ -164,6 +166,7 @@ extension Store where Action == TheApp.Action, State == TheApp.State {
164166
purchaseManager: FakePurchaseManager(),
165167
updater: FakeUpdater(),
166168
activatorConflictChecker: .init(persisted: Readonly(persisted)),
169+
launchAtLoginManager: FakeLaunchAtLoginManager(),
167170
overrideControllers: []
168171
))
169172
)

AbnormalMouse/AbnormalMouse/AppDelegate.swift

Lines changed: 9 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ private let userDefaults = MemoryPropertyListStorage()
1212
private let persisted = Persisted(userDefaults: userDefaults)
1313
private let eventHook = FakeCGEventHook()
1414
private let purchaseManager = FakePurchaseManager()
15+
private let launchAtLoginManager = FakeLaunchAtLoginManager()
16+
private let updater = FakeUpdater()
1517
#else
1618
private let persisted = Persisted(userDefaults: UserDefaults.standard)
1719
private let eoi: Set<CGEventType> = {
@@ -26,6 +28,8 @@ private let eoi: Set<CGEventType> = {
2628

2729
private let eventHook = CGEventHook(eventsOfInterest: eoi)
2830
private let purchaseManager = RealPurchaseManager()
31+
private let launchAtLoginManager = LaunchAtLoginManager()
32+
private let updater = SparkleUpdater()
2933
#endif
3034

3135
private let store = TheApp.Store(
@@ -34,8 +38,9 @@ private let store = TheApp.Store(
3438
environment: .live(environment: .init(
3539
persisted: persisted,
3640
purchaseManager: purchaseManager,
37-
updater: SparkleUpdater(),
41+
updater: updater,
3842
activatorConflictChecker: .init(persisted: Readonly(persisted)),
43+
launchAtLoginManager: launchAtLoginManager,
3944
overrideControllers: [
4045
MoveToScrollController(
4146
persisted: Readonly(persisted.moveToScroll),
@@ -80,8 +85,6 @@ class AppDelegate: NSObject, NSApplicationDelegate {
8085
#if !PREVIEW
8186
defer { persisted.launchCount += 1 }
8287
purchaseManager.startTrialIfNeeded()
83-
killLauncherIfNeeded()
84-
setupStartAtLoginIfNeeded()
8588
startupPurchaseManager()
8689
observeForSleeps()
8790
presentWindowIfNeeded()
@@ -107,7 +110,6 @@ extension AppDelegate {
107110
NSApp.setActivationPolicy(.regular)
108111
if let window = window {
109112
window.makeKeyAndOrderFront(self)
110-
NSApp.activate(ignoringOtherApps: true)
111113
} else {
112114
let window = NSWindow(
113115
contentRect: NSRect(x: 0, y: 0, width: 700, height: 400),
@@ -129,6 +131,7 @@ extension AppDelegate {
129131
window.makeKeyAndOrderFront(self)
130132
self.window = window
131133
}
134+
NSApp.activate(ignoringOtherApps: true)
132135
}
133136

134137
@objc private func buildStatusBarMenu() {
@@ -227,31 +230,11 @@ extension AppDelegate: NSMenuDelegate {
227230

228231
extension AppDelegate: NSWindowDelegate {
229232
func windowWillClose(_: Notification) {
230-
NSApp.setActivationPolicy(.prohibited)
233+
NSApp.setActivationPolicy(.accessory)
231234
}
232235
}
233236

234237
extension AppDelegate {
235-
private func killLauncherIfNeeded() {
236-
let runningApps = NSWorkspace.shared.runningApplications
237-
let isRunning = !runningApps
238-
.filter { $0.bundleIdentifier == LaunchAtLoginConstants.launcherIdentifier }
239-
.isEmpty
240-
241-
if isRunning {
242-
DistributedNotificationCenter.default().post(
243-
name: .killLauncher,
244-
object: Bundle.main.bundleIdentifier!
245-
)
246-
}
247-
}
248-
249-
private func setupStartAtLoginIfNeeded() {
250-
let shouldStartAtLogin = persisted.general.startAtLogin
251-
let launcherIdentifier = LaunchAtLoginConstants.launcherIdentifier
252-
SMLoginItemSetEnabled(launcherIdentifier as CFString, shouldStartAtLogin)
253-
}
254-
255238
private func checkAuthorization() {
256239
let isTrusted = AXIsProcessTrusted()
257240
ViewStore(store).send(.setAccessabilityAuthorized(isTrusted))
@@ -321,7 +304,7 @@ extension AppDelegate {
321304
if persisted.launchCount == 0 {
322305
showSettingsWindow()
323306
} else {
324-
NSApp.setActivationPolicy(.prohibited)
307+
NSApp.setActivationPolicy(.accessory)
325308
}
326309
}
327310
}

AbnormalMouse/AbnormalMouse/Features/General/GeneralDomain.swift

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ enum GeneralDomain: Domain {
5858
let persisted: Persisted.General
5959
let purchaseManager: PurchaseManagerType
6060
let updater: Updater?
61+
let launchAtLoginManager: LaunchAtLoginManagerType
6162
}
6263

6364
enum CancellableKeys: Hashable {
@@ -70,14 +71,14 @@ enum GeneralDomain: Domain {
7071
case .appear:
7172
state.automaticallyCheckForUpdate = environment.updater?
7273
.automaticallyChecksForUpdates ?? false
74+
state.startAtLogin = environment.launchAtLoginManager.launchAtLogin
7375
return .none
7476
case .toggleStartAtLogin:
7577
state.startAtLogin.toggle()
7678
let shouldStartAtLogin = state.startAtLogin
7779
return .fireAndForget {
78-
environment.persisted.startAtLogin = shouldStartAtLogin
79-
let launcherIdentifier = LaunchAtLoginConstants.launcherIdentifier
80-
SMLoginItemSetEnabled(launcherIdentifier as CFString, shouldStartAtLogin)
80+
let manager = environment.launchAtLoginManager
81+
manager.launchAtLogin = shouldStartAtLogin
8182
}
8283
case .observePurchaseState:
8384
return environment.purchaseManager.purchaseState
@@ -218,7 +219,8 @@ extension Store where State == GeneralDomain.State, Action == GeneralDomain.Acti
218219
environment: .live(environment: .init(
219220
persisted: .init(),
220221
purchaseManager: FakePurchaseManager(),
221-
updater: FakeUpdater()
222+
updater: FakeUpdater(),
223+
launchAtLoginManager: FakeLaunchAtLoginManager()
222224
))
223225
)
224226
}

AbnormalMouse/AbnormalMouse/Features/Main/MainDomain.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ struct MainDomain: Domain {
1212
var activatorConflictChecker: ActivatorConflictChecker
1313
var purchaseManager: PurchaseManagerType
1414
var updater: Updater
15+
var launchAtLoginManager: LaunchAtLoginManagerType
1516
}
1617

1718
struct State: Equatable {
@@ -155,7 +156,8 @@ struct MainDomain: Domain {
155156
.init(
156157
persisted: $0.persisted.general,
157158
purchaseManager: $0.purchaseManager,
158-
updater: $0.updater
159+
updater: $0.updater,
160+
launchAtLoginManager: $0.launchAtLoginManager
159161
)
160162
}
161163
}
@@ -191,7 +193,8 @@ extension Store where Action == MainDomain.Action, State == MainDomain.State {
191193
persisted: persisted,
192194
activatorConflictChecker: .init(persisted: Readonly(persisted)),
193195
purchaseManager: FakePurchaseManager(),
194-
updater: FakeUpdater()
196+
updater: FakeUpdater(),
197+
launchAtLoginManager: FakeLaunchAtLoginManager()
195198
))
196199
)
197200
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
protocol LaunchAtLoginManagerType: AnyObject {
2+
var launchAtLogin: Bool { get set }
3+
}
4+
5+
final class FakeLaunchAtLoginManager: LaunchAtLoginManagerType {
6+
var launchAtLogin: Bool = false
7+
}
8+
9+
import LaunchAtLogin
10+
11+
final class LaunchAtLoginManager: LaunchAtLoginManagerType {
12+
var launchAtLogin: Bool {
13+
get { LaunchAtLogin.isEnabled }
14+
set { LaunchAtLogin.isEnabled = newValue }
15+
}
16+
}

AbnormalMouse/AbnormalMouseLauncher/AbnormalMouseLauncher.entitlements

Lines changed: 0 additions & 5 deletions
This file was deleted.

AbnormalMouse/AbnormalMouseLauncher/AppDelegate.swift

Lines changed: 0 additions & 37 deletions
This file was deleted.

AbnormalMouse/AbnormalMouseLauncher/Info.plist

Lines changed: 0 additions & 40 deletions
This file was deleted.

0 commit comments

Comments
 (0)