Skip to content

Commit

Permalink
refactor: replace AppleScriptError with QueryError
Browse files Browse the repository at this point in the history
  • Loading branch information
tisfeng committed Sep 14, 2024
1 parent 01b4f93 commit c3c271b
Show file tree
Hide file tree
Showing 5 changed files with 75 additions and 7 deletions.
12 changes: 12 additions & 0 deletions Easydict.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
0340D3962C9184D3004C9910 /* AppleScriptTask+Browser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0340D3952C9184D3004C9910 /* AppleScriptTask+Browser.swift */; };
0340D3992C91D4B6004C9910 /* AppleScriptTask+System.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0340D3982C91D4B6004C9910 /* AppleScriptTask+System.swift */; };
0340D39B2C93DC1B004C9910 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0340D39A2C93DC1B004C9910 /* Constants.swift */; };
0340D39E2C951850004C9910 /* QueryError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0340D39D2C951850004C9910 /* QueryError.swift */; };
0342A9812AD64924002A9F5F /* NSString+EZSplit.m in Sources */ = {isa = PBXBuildFile; fileRef = 0342A9802AD64924002A9F5F /* NSString+EZSplit.m */; };
03542A30293645DF00C34C33 /* EZAppleService.m in Sources */ = {isa = PBXBuildFile; fileRef = 03542A2F293645DF00C34C33 /* EZAppleService.m */; };
03542A342936F70F00C34C33 /* EZLanguageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 03542A332936F70F00C34C33 /* EZLanguageManager.m */; };
Expand Down Expand Up @@ -427,6 +428,7 @@
0340D3952C9184D3004C9910 /* AppleScriptTask+Browser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AppleScriptTask+Browser.swift"; sourceTree = "<group>"; };
0340D3982C91D4B6004C9910 /* AppleScriptTask+System.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AppleScriptTask+System.swift"; sourceTree = "<group>"; };
0340D39A2C93DC1B004C9910 /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = "<group>"; };
0340D39D2C951850004C9910 /* QueryError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueryError.swift; sourceTree = "<group>"; };
0342A97F2AD64924002A9F5F /* NSString+EZSplit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSString+EZSplit.h"; sourceTree = "<group>"; };
0342A9802AD64924002A9F5F /* NSString+EZSplit.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSString+EZSplit.m"; sourceTree = "<group>"; };
03542A2E293645DF00C34C33 /* EZAppleService.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EZAppleService.h; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1138,6 +1140,14 @@
path = AppleScript;
sourceTree = "<group>";
};
0340D39C2C951839004C9910 /* Error */ = {
isa = PBXGroup;
children = (
0340D39D2C951850004C9910 /* QueryError.swift */,
);
path = Error;
sourceTree = "<group>";
};
03542A2D293645B800C34C33 /* Apple */ = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -2479,6 +2489,7 @@
EA9943E12B534C2900EE7B97 /* Model */ = {
isa = PBXGroup;
children = (
0340D39C2C951839004C9910 /* Error */,
EA9943E22B534C3300EE7B97 /* TTSServiceType.swift */,
0337D0082C109D0C002ACE72 /* ServiceUsageStatus.swift */,
);
Expand Down Expand Up @@ -2917,6 +2928,7 @@
03542A492937B5CF00C34C33 /* EZGoogleTranslate.m in Sources */,
03D0435A2928C4C800E7559E /* EZWindowManager.m in Sources */,
6295DE342A84EF76006145F4 /* EZBingLookupModel.m in Sources */,
0340D39E2C951850004C9910 /* QueryError.swift in Sources */,
03FD68BE2B1E151A00FD388E /* String+EncryptAES.swift in Sources */,
C4A512BE2C414A2400F00F33 /* AIToolService.swift in Sources */,
03B0230729231FA6001C7E63 /* EZCommonView.m in Sources */,
Expand Down
54 changes: 54 additions & 0 deletions Easydict/Swift/Model/Error/QueryError.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
//
// QueryError.swift
// Easydict
//
// Created by tisfeng on 2024/9/14.
// Copyright © 2024 izual. All rights reserved.
//

import Foundation

// MARK: - QueryError

@objcMembers
public class QueryError: NSError, LocalizedError {
// MARK: Lifecycle

public init(type: ErrorType, code: Int = -1, message: String) {
self.type = type
self.message = message
let userInfo = [NSLocalizedDescriptionKey: message]
super.init(domain: Bundle.main.bundleIdentifier!, code: code, userInfo: userInfo)
}

required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}

// MARK: Public

public enum ErrorType: String {
case unknown = "Unknown Error"
case api = "API Error"
case parameter = "Parameter Error"
case timeout = "Timeout Error"
case appleScript = "AppleScript Execution Error"
case unsupported = "Unsupported Language"
case missingSecretKey = "Missing Secret Key"
}

public let type: ErrorType
public var message: String

public override var localizedDescription: String {
description
}

public override var description: String {
"\(type.rawValue): \(message)"
}

public static func error(type: ErrorType, code: Int = -1, message: String) -> QueryError {
QueryError(type: type, code: code, message: message)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ extension AppleScriptTask {
logInfo("AppleScript get alert volume: \(volume)")
return volume
}
throw AppleScriptError.executionError(message: "Failed to get alert volume")
throw QueryError(type: .appleScript, message: "Failed to get alert volume")
}

static func setAlertVolume(_ volume: Int) async throws {
Expand Down
12 changes: 6 additions & 6 deletions Easydict/Swift/Utility/AppleScript/AppleScriptTask.swift
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ class AppleScriptTask: NSObject {
let script = NSAppleScript(source: appleScript)
guard let output = script?.executeAndReturnError(&errorInfo) else {
let errorMessage = errorInfo?[NSAppleScript.errorMessage] as? String ?? "Run AppleScript error"
throw AppleScriptError.executionError(message: errorMessage)
throw QueryError(type: .appleScript, message: errorMessage)
}
return output.stringValue
}.value
Expand All @@ -80,7 +80,7 @@ class AppleScriptTask: NSObject {

guard let output, errorInfo == nil else {
let errorMessage = errorInfo?[NSAppleScript.errorMessage] as? String ?? "Run AppleScript error"
continuation.resume(throwing: AppleScriptError.executionError(message: errorMessage))
continuation.resume(throwing: QueryError(type: .appleScript, message: errorMessage))
return
}
continuation.resume(returning: output)
Expand All @@ -99,7 +99,7 @@ class AppleScriptTask: NSObject {
let errorData = try self.errorPipe.fileHandleForReading.readToEnd()

if let error = errorData?.stringValue {
continuation.resume(throwing: AppleScriptError.executionError(message: error))
continuation.resume(throwing: QueryError(type: .appleScript, message: error))

} else {
continuation.resume(returning: outputData?.stringValue)
Expand All @@ -123,9 +123,9 @@ class AppleScriptTask: NSObject {

// MARK: - AppleScriptError

enum AppleScriptError: Error {
case executionError(message: String, code: Int = 1)
}
// enum AppleScriptError: Error {
// case executionError(message: String, code: Int = 1)
// }

func appleScript(of shortcutName: String, inputText: String) -> String {
// inputText may contain ", we need to escape it
Expand Down
2 changes: 2 additions & 0 deletions Easydict/objc/EventMonitor/EZEventMonitor.m
Original file line number Diff line number Diff line change
Expand Up @@ -398,6 +398,8 @@ - (void)handleSelectedText:(NSString *)text {

/// Get selected text by simulated key: Cmd + C
- (void)getSelectedTextBySimulatedKey:(void (^)(NSString *_Nullable))completion {
MMLogInfo(@"get selected text by simulated key");

NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
NSInteger changeCount = [pasteboard changeCount];
NSString *lastText = [EZSystemUtility getLastPasteboardText];
Expand Down

0 comments on commit c3c271b

Please sign in to comment.