Skip to content

Commit 5f8bb95

Browse files
committed
Merge branch 'henry0312-fix_open'
2 parents a1f2c7c + 92fb03e commit 5f8bb95

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

Terminal Notifier/AppDelegate.m

+28-1
Original file line numberDiff line numberDiff line change
@@ -190,9 +190,22 @@ - (void)applicationDidFinishLaunching:(NSNotification *)notification;
190190
if (defaults[@"activate"]) options[@"bundleID"] = defaults[@"activate"];
191191
if (defaults[@"group"]) options[@"groupID"] = defaults[@"group"];
192192
if (defaults[@"execute"]) options[@"command"] = defaults[@"execute"];
193-
if (defaults[@"open"]) options[@"open"] = [defaults[@"open"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
194193
if (defaults[@"appIcon"]) options[@"appIcon"] = defaults[@"appIcon"];
195194
if (defaults[@"contentImage"]) options[@"contentImage"] = defaults[@"contentImage"];
195+
if (defaults[@"open"]) {
196+
/*
197+
* it may be better to use stringByAddingPercentEncodingWithAllowedCharacters instead of stringByAddingPercentEscapesUsingEncoding,
198+
* but stringByAddingPercentEncodingWithAllowedCharacters is only available on OS X 10.9 or higher.
199+
*/
200+
NSString *encodedURL = [defaults[@"open"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
201+
NSURL *url = [NSURL URLWithString:defaults[@"open"]];
202+
NSString *fragment = [url fragment];
203+
if (fragment) {
204+
options[@"open"] = [self decodeFragmentInURL:encodedURL fragment:fragment];
205+
} else {
206+
options[@"open"] = encodedURL;
207+
}
208+
}
196209

197210
[self deliverNotificationWithTitle:defaults[@"title"] ?: @"Terminal"
198211
subtitle:subtitle
@@ -213,6 +226,20 @@ - (NSImage*)getImageFromURL:(NSString *) url;
213226
return [[NSImage alloc] initWithContentsOfURL:imageURL];
214227
}
215228

229+
/**
230+
* Decode fragment identifier
231+
*
232+
* @see http://tools.ietf.org/html/rfc3986#section-2.1
233+
* @see http://en.wikipedia.org/wiki/URI_scheme
234+
*/
235+
- (NSString*)decodeFragmentInURL:(NSString *) encodedURL fragment:(NSString *) framgent
236+
{
237+
NSString *beforeStr = [@"%23" stringByAppendingString:framgent];
238+
NSString *afterStr = [@"#" stringByAppendingString:framgent];
239+
NSString *decodedURL = [encodedURL stringByReplacingOccurrencesOfString:beforeStr withString:afterStr];
240+
return decodedURL;
241+
}
242+
216243
- (void)deliverNotificationWithTitle:(NSString *)title
217244
subtitle:(NSString *)subtitle
218245
message:(NSString *)message

0 commit comments

Comments
 (0)