Skip to content

Commit

Permalink
Merge pull request #239 from tatsuz0u/develop
Browse files Browse the repository at this point in the history
Bugfixes & Refactoring
  • Loading branch information
tatsuz0u authored Feb 26, 2022
2 parents 345e952 + 7f2f7ee commit 3011446
Show file tree
Hide file tree
Showing 27 changed files with 244 additions and 171 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
types: [closed]
env:
DEVELOPER_DIR: /Applications/Xcode_13.2.1.app
APP_VERSION: '2.3.0'
APP_VERSION: '2.3.1'
SCHEME_NAME: 'EhPanda'
ALTSTORE_JSON_PATH: './AltStore.json'
BUILDS_PATH: '/tmp/action-builds'
Expand Down
4 changes: 4 additions & 0 deletions EhPanda.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
AB1EF25427AFA19200F507D6 /* Heap.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB1EF25327AFA19200F507D6 /* Heap.swift */; };
AB1FA8FC27C5E0E50063EF55 /* TagDetail.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB1FA8FB27C5E0E50063EF55 /* TagDetail.swift */; };
AB1FA94927C62BC80063EF55 /* CommonMark in Frameworks */ = {isa = PBXBuildFile; productRef = AB1FA94827C62BC80063EF55 /* CommonMark */; };
AB1FA94D27CA1F140063EF55 /* TagTranslation.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB1FA94C27CA1F140063EF55 /* TagTranslation.swift */; };
AB21CCA0274B4F0C00C115B1 /* SwiftyBeaver in Frameworks */ = {isa = PBXBuildFile; productRef = AB21CC9F274B4F0C00C115B1 /* SwiftyBeaver */; };
AB24C55A27674EDF0085C33A /* FavoritesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB24C55927674EDF0085C33A /* FavoritesView.swift */; };
AB24C55C2767565A0085C33A /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB24C55B2767565A0085C33A /* HomeView.swift */; };
Expand Down Expand Up @@ -336,6 +337,7 @@
AB10117F26986C1100C2C1A9 /* GalleryStateMO+CoreDataClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "GalleryStateMO+CoreDataClass.swift"; sourceTree = "<group>"; };
AB1EF25327AFA19200F507D6 /* Heap.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Heap.swift; sourceTree = "<group>"; };
AB1FA8FB27C5E0E50063EF55 /* TagDetail.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TagDetail.swift; sourceTree = "<group>"; };
AB1FA94C27CA1F140063EF55 /* TagTranslation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TagTranslation.swift; sourceTree = "<group>"; };
AB24C55927674EDF0085C33A /* FavoritesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FavoritesView.swift; sourceTree = "<group>"; };
AB24C55B2767565A0085C33A /* HomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeView.swift; sourceTree = "<group>"; };
AB24C565276758E30085C33A /* GalleryCardCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GalleryCardCell.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -638,6 +640,7 @@
children = (
AB1FA8FB27C5E0E50063EF55 /* TagDetail.swift */,
AB26F59327ACC6CD00AB3468 /* TagTranslator.swift */,
AB1FA94C27CA1F140063EF55 /* TagTranslation.swift */,
AB7BF2BF27A9669A001865A3 /* TagNamespace.swift */,
AB0CFBCA27C0B07F004BD372 /* TagSuggestion.swift */,
AB7BF2C527A968AB001865A3 /* TranslatableLanguage.swift */,
Expand Down Expand Up @@ -1605,6 +1608,7 @@
AB3072D4276E19AA00EFF242 /* FrontpageView.swift in Sources */,
AB3072D2276D734800EFF242 /* SubSection.swift in Sources */,
ABBB26682797BFAA007B6149 /* ActivityView.swift in Sources */,
AB1FA94D27CA1F140063EF55 /* TagTranslation.swift in Sources */,
ABC8355D27B118330091DCDB /* DetailSearchView.swift in Sources */,
ABBB264227942B74007B6149 /* URLClient.swift in Sources */,
AB0CFBD527C24B3B004BD372 /* MarkdownUtil.swift in Sources */,
Expand Down
7 changes: 3 additions & 4 deletions EhPanda/App/Tools/Parser.swift
Original file line number Diff line number Diff line change
Expand Up @@ -112,15 +112,15 @@ struct Parser {
if let index = tags.firstIndex(where: { $0.rawNamespace == namespace }) {
let contents = tags[index].contents
let galleryTagContent = GalleryTag.Content(
text: contentText, displayText: contentText,
rawNamespace: namespace, text: contentText,
isVotedUp: false, isVotedDown: false,
backgroundColor: contentBackgroundColor
)
let newContents = contents + [galleryTagContent]
tags[index] = .init(rawNamespace: namespace, contents: newContents)
} else {
let galleryTagContent = GalleryTag.Content(
text: contentText, displayText: contentText,
rawNamespace: namespace, text: contentText,
isVotedUp: false, isVotedDown: false,
backgroundColor: contentBackgroundColor
)
Expand Down Expand Up @@ -329,13 +329,12 @@ struct Parser {
var contents = [GalleryTag.Content]()
for divLink in link.xpath("//div") {
guard var text = divLink.text, let aClass = divLink.at_xpath("//a")?.className else { continue }
let displayText = text
if let range = text.range(of: " | ") {
text = .init(text[..<range.lowerBound])
}
contents.append(
.init(
text: text, displayText: displayText,
rawNamespace: namespace, text: text,
isVotedUp: aClass == "tup",
isVotedDown: aClass == "tdn",
backgroundColor: nil
Expand Down
4 changes: 3 additions & 1 deletion EhPanda/App/de.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@
"general.setting.view.title.autoLock" = "Auto-Lock";
"general.setting.view.title.enablesTagsExtension" = "Enables tags extension";
"general.setting.view.title.translatesTags" = "Translates tags";
"general.setting.view.title.showsTagsSearchSuggestions" = "Shows tags search suggestions";
"general.setting.view.title.showsTagsSearchSuggestion" = "Shows tags search suggestion";
"general.setting.view.title.showsImagesInTags" = "Shows images in tags";
"general.setting.view.title.redirectsLinksToTheSelectedHost" = "Links zum ausgewählten Host umleiten";
"general.setting.view.title.detectsLinksFromClipboard" = "Übernimmt automatisch Links aus der Zwischenablage";
Expand Down Expand Up @@ -214,9 +214,11 @@
"appearance.setting.view.title.displayMode" = "Display mode";
"appearance.setting.view.title.showsTagsInList" = "Tags als Liste anzeigen";
"appearance.setting.view.title.maximumNumberOfTags" = "Maximale Anzahl an Tags";
"appearance.setting.view.title.displaysJapaneseTitle" = "Displays Japanese title";
"appearance.setting.view.button.appIcon" = "App icon";
"appearance.setting.view.menu.title.infite" = "Infite";
"appearance.setting.view.section.title.list" = "List";
"appearance.setting.view.section.title.gallery" = "Gallery";
// PerferredColorScheme
"enum.perferred.color.scheme.value.automatic" = "Automatisch";
"enum.perferred.color.scheme.value.light" = "Hell";
Expand Down
4 changes: 3 additions & 1 deletion EhPanda/App/en.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@
"general.setting.view.title.autoLock" = "Auto-Lock";
"general.setting.view.title.enablesTagsExtension" = "Enables tags extension";
"general.setting.view.title.translatesTags" = "Translates tags";
"general.setting.view.title.showsTagsSearchSuggestions" = "Shows tags search suggestions";
"general.setting.view.title.showsTagsSearchSuggestion" = "Shows tags search suggestion";
"general.setting.view.title.showsImagesInTags" = "Shows images in tags";
"general.setting.view.title.redirectsLinksToTheSelectedHost" = "Redirects links to the selected host";
"general.setting.view.title.detectsLinksFromClipboard" = "Detects links from the clipboard";
Expand Down Expand Up @@ -214,9 +214,11 @@
"appearance.setting.view.title.displayMode" = "Display mode";
"appearance.setting.view.title.showsTagsInList" = "Shows tags in list";
"appearance.setting.view.title.maximumNumberOfTags" = "Maximum number of tags";
"appearance.setting.view.title.displaysJapaneseTitle" = "Displays Japanese title";
"appearance.setting.view.button.appIcon" = "App icon";
"appearance.setting.view.menu.title.infite" = "Infite";
"appearance.setting.view.section.title.list" = "List";
"appearance.setting.view.section.title.gallery" = "Gallery";
// PerferredColorScheme
"enum.perferred.color.scheme.value.automatic" = "Automatic";
"enum.perferred.color.scheme.value.light" = "Light";
Expand Down
4 changes: 3 additions & 1 deletion EhPanda/App/ja.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@
"general.setting.view.title.autoLock" = "自動ロック";
"general.setting.view.title.enablesTagsExtension" = "タグの拡張機能を有効";
"general.setting.view.title.translatesTags" = "タグを訳す";
"general.setting.view.title.showsTagsSearchSuggestions" = "タグの検索提案を表示";
"general.setting.view.title.showsTagsSearchSuggestion" = "タグの検索提案を表示";
"general.setting.view.title.showsImagesInTags" = "タグの画像を表示";
"general.setting.view.title.redirectsLinksToTheSelectedHost" = "リンクを選択されたホストへリダイレクト";
"general.setting.view.title.detectsLinksFromClipboard" = "クリップボードからリンクを探知";
Expand Down Expand Up @@ -214,9 +214,11 @@
"appearance.setting.view.title.displayMode" = "表示モード";
"appearance.setting.view.title.showsTagsInList" = "リストでタグを表示";
"appearance.setting.view.title.maximumNumberOfTags" = "タグ数上限";
"appearance.setting.view.title.displaysJapaneseTitle" = "日本語タイトルを表示";
"appearance.setting.view.button.appIcon" = "アプリアイコン";
"appearance.setting.view.menu.title.infite" = "無制限";
"appearance.setting.view.section.title.list" = "リスト";
"appearance.setting.view.section.title.gallery" = "ギャラリー";
// PerferredColorScheme
"enum.perferred.color.scheme.value.automatic" = "自動";
"enum.perferred.color.scheme.value.light" = "ライト";
Expand Down
4 changes: 3 additions & 1 deletion EhPanda/App/ko.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@
"general.setting.view.title.autoLock" = "앱 자동 잠금";
"general.setting.view.title.enablesTagsExtension" = "Enables tags extension";
"general.setting.view.title.translatesTags" = "태그 번역하기";
"general.setting.view.title.showsTagsSearchSuggestions" = "Shows tags search suggestions";
"general.setting.view.title.showsTagsSearchSuggestion" = "Shows tags search suggestion";
"general.setting.view.title.showsImagesInTags" = "Shows images in tags";
"general.setting.view.title.redirectsLinksToTheSelectedHost" = "선택한 서버로 이동하기";
"general.setting.view.title.detectsLinksFromClipboard" = "클립보드의 링크 인식하기";
Expand Down Expand Up @@ -214,9 +214,11 @@
"appearance.setting.view.title.displayMode" = "표시방식";
"appearance.setting.view.title.showsTagsInList" = "리스트에서 태그 보여주기";
"appearance.setting.view.title.maximumNumberOfTags" = "태그 갯수";
"appearance.setting.view.title.displaysJapaneseTitle" = "Displays Japanese title";
"appearance.setting.view.button.appIcon" = "앱 아이콘";
"appearance.setting.view.menu.title.infite" = "제한 없음";
"appearance.setting.view.section.title.list" = "리스트";
"appearance.setting.view.section.title.gallery" = "Gallery";
// PerferredColorScheme
"enum.perferred.color.scheme.value.automatic" = "자동";
"enum.perferred.color.scheme.value.light" = "라이트";
Expand Down
4 changes: 3 additions & 1 deletion EhPanda/App/zh-Hans.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@
"general.setting.view.title.autoLock" = "自动锁定";
"general.setting.view.title.enablesTagsExtension" = "启用标签扩展";
"general.setting.view.title.translatesTags" = "翻译标签";
"general.setting.view.title.showsTagsSearchSuggestions" = "显示标签搜索建议";
"general.setting.view.title.showsTagsSearchSuggestion" = "显示标签搜索建议";
"general.setting.view.title.showsImagesInTags" = "显示标签中的图像";
"general.setting.view.title.redirectsLinksToTheSelectedHost" = "重定向链接到选定的站点";
"general.setting.view.title.detectsLinksFromClipboard" = "从剪切板检测链接";
Expand Down Expand Up @@ -214,9 +214,11 @@
"appearance.setting.view.title.displayMode" = "显示样式";
"appearance.setting.view.title.showsTagsInList" = "在列表中显示标签";
"appearance.setting.view.title.maximumNumberOfTags" = "标签数量上限";
"appearance.setting.view.title.displaysJapaneseTitle" = "显示日文标题";
"appearance.setting.view.button.appIcon" = "应用图标";
"appearance.setting.view.menu.title.infite" = "无限";
"appearance.setting.view.section.title.list" = "列表";
"appearance.setting.view.section.title.gallery" = "画廊";
// PerferredColorScheme
"enum.perferred.color.scheme.value.automatic" = "自动";
"enum.perferred.color.scheme.value.light" = "浅色";
Expand Down
4 changes: 3 additions & 1 deletion EhPanda/App/zh-Hant.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@
"general.setting.view.title.autoLock" = "自動鎖定";
"general.setting.view.title.enablesTagsExtension" = "Enables tags extension";
"general.setting.view.title.translatesTags" = "翻譯標籤";
"general.setting.view.title.showsTagsSearchSuggestions" = "Shows tags search suggestions";
"general.setting.view.title.showsTagsSearchSuggestion" = "Shows tags search suggestion";
"general.setting.view.title.showsImagesInTags" = "Shows images in tags";
"general.setting.view.title.redirectsLinksToTheSelectedHost" = "重定向連結到選定的站點";
"general.setting.view.title.detectsLinksFromClipboard" = "偵測剪貼簿中的連結";
Expand Down Expand Up @@ -214,9 +214,11 @@
"appearance.setting.view.title.displayMode" = "顯示模式";
"appearance.setting.view.title.showsTagsInList" = "在列表中顯示標籤";
"appearance.setting.view.title.maximumNumberOfTags" = "標籤數量上限";
"appearance.setting.view.title.displaysJapaneseTitle" = "Displays Japanese title";
"appearance.setting.view.button.appIcon" = "應用圖標";
"appearance.setting.view.menu.title.infite" = "無限";
"appearance.setting.view.section.title.list" = "列表";
"appearance.setting.view.section.title.gallery" = "Gallery";
// PerferredColorScheme
"enum.perferred.color.scheme.value.automatic" = "自動";
"enum.perferred.color.scheme.value.light" = "淺色";
Expand Down
12 changes: 2 additions & 10 deletions EhPanda/Models/Gallery/GalleryState.swift
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ extension GalleryState: CustomStringConvertible {

struct GalleryTag: Codable, Equatable, Hashable, Identifiable {
struct Content: Codable, Equatable, Hashable, Identifiable {
var id: String { text + displayText }
var id: String { rawNamespace + text }
var firstLetterCapitalizedText: String {
text.firstLetterCapitalized
}
Expand All @@ -55,19 +55,11 @@ struct GalleryTag: Codable, Equatable, Hashable, Identifiable {
return tag.namespace == .temp ? keyword : [namespace, keyword].joined(separator: ":")
}

let rawNamespace: String
let text: String
private let displayText: String
let isVotedUp: Bool
let isVotedDown: Bool
let backgroundColor: Color?

init(text: String, displayText: String, isVotedUp: Bool, isVotedDown: Bool, backgroundColor: Color?) {
self.text = text
self.displayText = displayText
self.isVotedUp = isVotedUp
self.isVotedDown = isVotedDown
self.backgroundColor = backgroundColor
}
}

var id: String { rawNamespace }
Expand Down
8 changes: 5 additions & 3 deletions EhPanda/Models/Persistent/Setting.swift
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@ struct Setting: Codable, Equatable {
didSet {
if !enablesTagsExtension {
translatesTags = false
showsTagsSearchSuggestions = false
showsTagsSearchSuggestion = false
showsImagesInTags = false
}
}
}
var translatesTags = false
var showsTagsSearchSuggestions = false
var showsTagsSearchSuggestion = false
var showsImagesInTags = false
var redirectsLinksToSelectedHost = false
var detectsLinksFromClipboard = false
Expand All @@ -39,6 +39,7 @@ struct Setting: Codable, Equatable {
var appIconType: AppIconType = .default
var showsTagsInList = false
var listTagsNumberMaximum = 0
var displaysJapaneseTitle = true

// Reading
var readingDirection: ReadingDirection = .vertical
Expand Down Expand Up @@ -184,7 +185,7 @@ extension Setting {
// General
enablesTagsExtension = (try? container?.decodeIfPresent(Bool.self, forKey: .enablesTagsExtension)) ?? false
translatesTags = (try? container?.decodeIfPresent(Bool.self, forKey: .translatesTags)) ?? false
showsTagsSearchSuggestions = (try? container?.decodeIfPresent(Bool.self, forKey: .showsTagsSearchSuggestions)) ?? false
showsTagsSearchSuggestion = (try? container?.decodeIfPresent(Bool.self, forKey: .showsTagsSearchSuggestion)) ?? false
showsImagesInTags = (try? container?.decodeIfPresent(Bool.self, forKey: .showsImagesInTags)) ?? false
redirectsLinksToSelectedHost = (try? container?.decodeIfPresent(Bool.self, forKey: .redirectsLinksToSelectedHost)) ?? false
detectsLinksFromClipboard = (try? container?.decodeIfPresent(Bool.self, forKey: .detectsLinksFromClipboard)) ?? false
Expand All @@ -197,6 +198,7 @@ extension Setting {
appIconType = (try? container?.decodeIfPresent(AppIconType.self, forKey: .appIconType)) ?? .default
showsTagsInList = (try? container?.decodeIfPresent(Bool.self, forKey: .showsTagsInList)) ?? false
listTagsNumberMaximum = (try? container?.decodeIfPresent(Int.self, forKey: .listTagsNumberMaximum)) ?? 0
displaysJapaneseTitle = (try? container?.decodeIfPresent(Bool.self, forKey: .displaysJapaneseTitle)) ?? true
// Reading
readingDirection = (try? container?.decodeIfPresent(ReadingDirection.self, forKey: .readingDirection)) ?? .vertical
prefetchLimit = (try? container?.decodeIfPresent(Int.self, forKey: .prefetchLimit)) ?? 10
Expand Down
6 changes: 4 additions & 2 deletions EhPanda/Models/Tags/EhTagTranslationDatabaseModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,9 @@ struct EhTagTranslationDatabaseResponse: Codable {

let data: [Model]

var tagTranslations: [TagTranslation] {
data.flatMap(\.tagTranslations)
var tagTranslations: [String: TagTranslation] {
.init(uniqueKeysWithValues: data.flatMap(\.tagTranslations).map({
($0.namespace.rawValue + $0.key, $0)
}))
}
}
5 changes: 4 additions & 1 deletion EhPanda/Models/Tags/TagSuggestion.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,16 @@ struct TagSuggestion: Equatable, Hashable, Identifiable {
let weight: Float
let keyRange: Range<String.Index>?
let valueRange: Range<String.Index>?
let originalKeyword: String
let matchesNamespace: Bool

var displayKey: String {
let namespace = tag.namespace.rawValue
var namespace = tag.namespace.rawValue
let leftSideString = leftSideString(of: keyRange, string: tag.key)
var middleString = middleString(of: keyRange, string: tag.key)
let rightSideString = rightSideString(of: keyRange, string: tag.key)
middleString = middleString.isEmpty ? middleString : middleString.linkStyled
namespace = matchesNamespace ? namespace.linkStyled : namespace
return [namespace, ":", leftSideString, middleString, rightSideString].joined()
}
var displayValue: String {
Expand Down
Loading

0 comments on commit 3011446

Please sign in to comment.