Skip to content

Commit

Permalink
Merge pull request #298 from EhPanda-Team/develop
Browse files Browse the repository at this point in the history
Bugfixes
  • Loading branch information
chihchy authored Nov 21, 2022
2 parents 4109a4c + f5a5196 commit cdf9b0e
Show file tree
Hide file tree
Showing 26 changed files with 123 additions and 420 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_14.1.app
APP_VERSION: '2.5.0'
APP_VERSION: '2.5.1'
SCHEME_NAME: 'EhPanda'
ALTSTORE_JSON_PATH: './AltStore.json'
BUILDS_PATH: '/tmp/action-builds'
Expand Down
4 changes: 2 additions & 2 deletions EhPanda/App/Constant.strings
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
"ehpanda.code.level.contributors.link.xioxin" = "https://github.com/xioxin";
"ehpanda.code.level.contributors.link.EthanChinCN" = "https://github.com/EthanChinCN";
"ehpanda.code.level.contributors.link.leng-yue" = "https://github.com/leng-yue";
"ehpanda.code.level.contributors.text.tatsuz0u" = "Tatsuzou Araki";
"ehpanda.code.level.contributors.text.tatsuz0u" = "Tatsuzo Araki";
"ehpanda.code.level.contributors.text.chihchy" = "Chihchy";
"ehpanda.code.level.contributors.text.xioxin" = "xioxin";
"ehpanda.code.level.contributors.text.EthanChinCN" = "Ethan Chin";
Expand All @@ -52,7 +52,7 @@
"ehpanda.translation.contributors.link.PaulHaeussler" = "https://github.com/PaulHaeussler";
"ehpanda.translation.contributors.link.caxerx" = "https://github.com/caxerx";
"ehpanda.translation.contributors.link.nyaanim" = "https://github.com/nyaanim";
"ehpanda.translation.contributors.text.tatsuz0u" = "Tatsuzou Araki";
"ehpanda.translation.contributors.text.tatsuz0u" = "Tatsuzo Araki";
"ehpanda.translation.contributors.text.PaulHaeussler" = "PaulHaeussler";
"ehpanda.translation.contributors.text.caxerx" = "caxerx";
"ehpanda.translation.contributors.text.nyaanim" = "nyaanim";
Expand Down
Binary file modified EhPanda/App/Icons/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified EhPanda/App/Icons/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified EhPanda/App/Icons/AppIcon_Developer_iPad.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified EhPanda/App/Icons/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified EhPanda/App/Icons/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
72 changes: 13 additions & 59 deletions EhPanda/App/Tools/Utilities/URLUtil.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,66 +9,36 @@ import Foundation

struct URLUtil {
// Fetch
static func searchList(keyword: String, filter: Filter, pageNum: Int? = nil) -> URL {
var queryItems: [Defaults.URL.Component.Key: String] = [.fSearch: keyword]
if let pageNum = pageNum {
queryItems[.page] = String(pageNum)
}
return Defaults.URL.host.appending(queryItems: queryItems).applyingFilter(filter)
static func searchList(keyword: String, filter: Filter) -> URL {
Defaults.URL.host.appending(queryItems: [.fSearch: keyword]).applyingFilter(filter)
}

static func moreSearchList(keyword: String, filter: Filter, pageNum: Int, lastID: String) -> URL {
var queryItems: [Defaults.URL.Component.Key: String] = [.fSearch: keyword]
if AppUtil.galleryHost == .ehentai {
queryItems[.page] = String(pageNum)
queryItems[.from] = lastID
} else {
queryItems[.next] = lastID
}
return Defaults.URL.host.appending(queryItems: queryItems).applyingFilter(filter)
static func moreSearchList(keyword: String, filter: Filter, lastID: String) -> URL {
Defaults.URL.host.appending(queryItems: [.fSearch: keyword, .next: lastID]).applyingFilter(filter)
}

static func frontpageList(filter: Filter, pageNum: Int? = nil) -> URL {
var url = Defaults.URL.host
if let pageNum = pageNum {
url.append(queryItems: [.page: String(pageNum)])
}
return url.applyingFilter(filter)
static func frontpageList(filter: Filter) -> URL {
Defaults.URL.host.applyingFilter(filter)
}

static func moreFrontpageList(filter: Filter, pageNum: Int, lastID: String) -> URL {
var queryItems = [Defaults.URL.Component.Key: String]()
if AppUtil.galleryHost == .ehentai {
queryItems[.page] = String(pageNum)
queryItems[.from] = lastID
} else {
queryItems[.next] = lastID
}
return Defaults.URL.host.appending(queryItems: queryItems).applyingFilter(filter)
static func moreFrontpageList(filter: Filter, lastID: String) -> URL {
Defaults.URL.host.appending(queryItems: [.next: lastID]).applyingFilter(filter)
}

static func popularList(filter: Filter) -> URL {
Defaults.URL.popular.applyingFilter(filter)
}

static func watchedList(filter: Filter, pageNum: Int? = nil, keyword: String = "") -> URL {
static func watchedList(filter: Filter, keyword: String = "") -> URL {
var url = Defaults.URL.watched
if let pageNum = pageNum {
url.append(queryItems: [.page: String(pageNum)])
}
if !keyword.isEmpty {
url.append(queryItems: [.fSearch: keyword])
}
return url.applyingFilter(filter)
}

static func moreWatchedList(filter: Filter, pageNum: Int, lastID: String, keyword: String = "") -> URL {
var url: URL
if AppUtil.galleryHost == .ehentai {
url = Defaults.URL.watched.appending(queryItems: [.page: String(pageNum), .from: lastID])
} else {
url = Defaults.URL.watched.appending(queryItems: [.next: lastID])
}
static func moreWatchedList(filter: Filter, lastID: String, keyword: String = "") -> URL {
var url = Defaults.URL.watched.appending(queryItems: [.next: lastID])
if !keyword.isEmpty {
url.append(queryItems: [.fSearch: keyword])
}
Expand All @@ -77,7 +47,6 @@ struct URLUtil {

static func favoritesList(
favIndex: Int,
pageNum: Int? = nil,
keyword: String = "",
sortOrder: FavoritesSortOrder? = nil
) -> URL {
Expand All @@ -87,9 +56,6 @@ struct URLUtil {
} else {
url.append(queryItems: [.favcat: .all])
}
if let pageNum = pageNum {
url.append(queryItems: [.page: String(pageNum)])
}
if !keyword.isEmpty {
url.append(queryItems: [.fSearch: keyword])
url.append(queryItems: [.sn: .filterOn, .st: .filterOn, .sf: .filterOn])
Expand All @@ -105,23 +71,11 @@ struct URLUtil {

static func moreFavoritesList(
favIndex: Int,
pageNum: Int,
lastID: String,
lastTimestamp: String? = nil,
lastTimestamp: String,
keyword: String = ""
) -> URL {
var url: URL
if AppUtil.galleryHost == .ehentai {
url = Defaults.URL.favorites.appending(queryItems: [.page: String(pageNum), .from: lastID])
} else {
var queryItems: [Defaults.URL.Component.Key: String]
if let lastTimestamp {
queryItems = [.next: [lastID, lastTimestamp].joined(separator: "-")]
} else {
queryItems = [.next: lastID]
}
url = Defaults.URL.favorites.appending(queryItems: queryItems)
}
var url = Defaults.URL.favorites.appending(queryItems: [.next: [lastID, lastTimestamp].joined(separator: "-")])
if favIndex != -1 {
url.append(queryItems: [.favcat: String(favIndex)])
} else {
Expand Down
8 changes: 3 additions & 5 deletions EhPanda/Models/Support/Misc.swift
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,13 @@ struct PageNumber: Equatable {
var current = 0
var maximum = 0
var lastItemTimestamp: String?
var isNextButtonEnabled = true
var isNextButtonEnabled = false

var isSinglePage: Bool {
current == 0 && maximum == 0
}
var hasNextPage: Bool {
AppUtil.galleryHost == .ehentai
? current < maximum
: isNextButtonEnabled
func hasNextPage(isNumericBased: Bool = false) -> Bool {
isNumericBased ? current < maximum : isNextButtonEnabled
}
mutating func resetPages() {
self = Self()
Expand Down
58 changes: 19 additions & 39 deletions EhPanda/Network/Request.swift
Original file line number Diff line number Diff line change
Expand Up @@ -138,11 +138,10 @@ struct TagTranslatorRequest: Request {
struct SearchGalleriesRequest: Request {
let keyword: String
let filter: Filter
var pageNum: Int?

var publisher: AnyPublisher<(PageNumber, [Gallery]), AppError> {
URLSession.shared.dataTaskPublisher(
for: URLUtil.searchList(keyword: keyword, filter: filter, pageNum: pageNum)
for: URLUtil.searchList(keyword: keyword, filter: filter)
)
.genericRetry()
.tryMap { try Kanna.HTML(html: $0.data, encoding: .utf8) }
Expand All @@ -156,13 +155,10 @@ struct MoreSearchGalleriesRequest: Request {
let keyword: String
let filter: Filter
let lastID: String
let pageNum: Int

var publisher: AnyPublisher<(PageNumber, [Gallery]), AppError> {
URLSession.shared.dataTaskPublisher(
for: URLUtil.moreSearchList(
keyword: keyword, filter: filter, pageNum: pageNum, lastID: lastID
)
for: URLUtil.moreSearchList(keyword: keyword, filter: filter, lastID: lastID)
)
.genericRetry()
.tryMap { try Kanna.HTML(html: $0.data, encoding: .utf8) }
Expand All @@ -174,10 +170,9 @@ struct MoreSearchGalleriesRequest: Request {

struct FrontpageGalleriesRequest: Request {
let filter: Filter
var pageNum: Int?

var publisher: AnyPublisher<(PageNumber, [Gallery]), AppError> {
URLSession.shared.dataTaskPublisher(for: URLUtil.frontpageList(filter: filter, pageNum: pageNum))
URLSession.shared.dataTaskPublisher(for: URLUtil.frontpageList(filter: filter))
.genericRetry()
.tryMap { try Kanna.HTML(html: $0.data, encoding: .utf8) }
.tryMap { (Parser.parsePageNum(doc: $0), try Parser.parseGalleries(doc: $0)) }
Expand All @@ -189,19 +184,14 @@ struct FrontpageGalleriesRequest: Request {
struct MoreFrontpageGalleriesRequest: Request {
let filter: Filter
let lastID: String
let pageNum: Int

var publisher: AnyPublisher<(PageNumber, [Gallery]), AppError> {
URLSession.shared.dataTaskPublisher(
for: URLUtil.moreFrontpageList(
filter: filter, pageNum: pageNum, lastID: lastID
)
)
.genericRetry()
.tryMap { try Kanna.HTML(html: $0.data, encoding: .utf8) }
.tryMap { (Parser.parsePageNum(doc: $0), try Parser.parseGalleries(doc: $0)) }
.mapError(mapAppError)
.eraseToAnyPublisher()
URLSession.shared.dataTaskPublisher(for: URLUtil.moreFrontpageList(filter: filter, lastID: lastID))
.genericRetry()
.tryMap { try Kanna.HTML(html: $0.data, encoding: .utf8) }
.tryMap { (Parser.parsePageNum(doc: $0), try Parser.parseGalleries(doc: $0)) }
.mapError(mapAppError)
.eraseToAnyPublisher()
}
}

Expand All @@ -220,34 +210,26 @@ struct PopularGalleriesRequest: Request {

struct WatchedGalleriesRequest: Request {
let filter: Filter
var pageNum: Int?
let keyword: String

var publisher: AnyPublisher<(PageNumber, [Gallery]), AppError> {
URLSession.shared.dataTaskPublisher(
for: URLUtil.watchedList(
filter: filter, pageNum: pageNum, keyword: keyword
)
)
.genericRetry()
.tryMap { try Kanna.HTML(html: $0.data, encoding: .utf8) }
.tryMap { (Parser.parsePageNum(doc: $0), try Parser.parseGalleries(doc: $0)) }
.mapError(mapAppError)
.eraseToAnyPublisher()
URLSession.shared.dataTaskPublisher(for: URLUtil.watchedList(filter: filter, keyword: keyword))
.genericRetry()
.tryMap { try Kanna.HTML(html: $0.data, encoding: .utf8) }
.tryMap { (Parser.parsePageNum(doc: $0), try Parser.parseGalleries(doc: $0)) }
.mapError(mapAppError)
.eraseToAnyPublisher()
}
}

struct MoreWatchedGalleriesRequest: Request {
let filter: Filter
let lastID: String
let pageNum: Int
let keyword: String

var publisher: AnyPublisher<(PageNumber, [Gallery]), AppError> {
URLSession.shared.dataTaskPublisher(
for: URLUtil.moreWatchedList(
filter: filter, pageNum: pageNum, lastID: lastID, keyword: keyword
)
for: URLUtil.moreWatchedList(filter: filter, lastID: lastID, keyword: keyword)
)
.genericRetry()
.tryMap { try Kanna.HTML(html: $0.data, encoding: .utf8) }
Expand All @@ -259,13 +241,12 @@ struct MoreWatchedGalleriesRequest: Request {

struct FavoritesGalleriesRequest: Request {
let favIndex: Int
var pageNum: Int?
let keyword: String
var sortOrder: FavoritesSortOrder?

var publisher: AnyPublisher<(PageNumber, FavoritesSortOrder?, [Gallery]), AppError> {
URLSession.shared.dataTaskPublisher(
for: URLUtil.favoritesList(favIndex: favIndex, pageNum: pageNum, keyword: keyword, sortOrder: sortOrder)
for: URLUtil.favoritesList(favIndex: favIndex, keyword: keyword, sortOrder: sortOrder)
)
.genericRetry()
.tryMap { try Kanna.HTML(html: $0.data, encoding: .utf8) }
Expand All @@ -284,14 +265,13 @@ struct FavoritesGalleriesRequest: Request {
struct MoreFavoritesGalleriesRequest: Request {
let favIndex: Int
let lastID: String
var lastTimestamp: String?
let pageNum: Int
var lastTimestamp: String
let keyword: String

var publisher: AnyPublisher<(PageNumber, FavoritesSortOrder?, [Gallery]), AppError> {
URLSession.shared.dataTaskPublisher(
for: URLUtil.moreFavoritesList(
favIndex: favIndex, pageNum: pageNum, lastID: lastID, lastTimestamp: lastTimestamp, keyword: keyword
favIndex: favIndex, lastID: lastID, lastTimestamp: lastTimestamp, keyword: keyword
)
)
.genericRetry()
Expand Down
Loading

0 comments on commit cdf9b0e

Please sign in to comment.