diff --git a/Shared Tests/URLParserTests.swift b/Shared Tests/URLParserTests.swift index 9d7055ed..c7bbaa22 100644 --- a/Shared Tests/URLParserTests.swift +++ b/Shared Tests/URLParserTests.swift @@ -55,6 +55,7 @@ final class URLParserTests: XCTestCase { let parser = URLParser(url: URL(string: url)!) XCTAssertEqual(parser.destination, .channel) XCTAssertEqual(parser.channelName, name) + XCTAssertNil(parser.channelID) } } @@ -63,6 +64,7 @@ final class URLParserTests: XCTestCase { let parser = URLParser(url: URL(string: url)!) XCTAssertEqual(parser.destination, .channel) XCTAssertEqual(parser.channelID, id) + XCTAssertNil(parser.channelName) } } diff --git a/Shared/URLParser.swift b/Shared/URLParser.swift index 46a172b2..85dc31fe 100644 --- a/Shared/URLParser.swift +++ b/Shared/URLParser.swift @@ -75,13 +75,12 @@ struct URLParser { } var channelName: String? { - guard destination == .channel else { return nil } - + guard hasAnyOfPrefixes(path, ["c/", "/c/"]) else { return nil } return removePrefixes(path, Self.prefixes[.channel]!.map { [$0, "/"].joined() }) } var channelID: String? { - guard destination == .channel else { return nil } + guard hasAnyOfPrefixes(path, ["channel/", "/channel/"]) else { return nil } return removePrefixes(path, Self.prefixes[.channel]!.map { [$0, "/"].joined() }) } @@ -95,7 +94,7 @@ struct URLParser { } private func hasAnyOfPrefixes(_ value: String, _ prefixes: [String]) -> Bool { - return prefixes.contains { value.hasPrefix($0) } + prefixes.contains { value.hasPrefix($0) } } private func removePrefixes(_ value: String, _ prefixes: [String]) -> String {