Fix handling feed

This commit is contained in:
Arkadiusz Fal 2022-12-14 17:23:04 +01:00
parent 2812ea0301
commit b55c6f8619
4 changed files with 14 additions and 30 deletions

View File

@ -34,30 +34,7 @@ final class InvidiousAPI: Service, ObservableObject, VideosAPI {
func setAccount(_ account: Account) {
self.account = account
wipeResources()
configure()
if !account.anonymous {
validate()
}
}
func validate() {
validateSID()
}
func validateSID() {
guard signedIn, !(account.token?.isEmpty ?? true) else {
return
}
feed?
.load()
.onFailure { _ in
self.updateToken(force: true)
}
wipeResources()
}
func configure() {
@ -162,7 +139,11 @@ final class InvidiousAPI: Service, ObservableObject, VideosAPI {
return CommentsPage(comments: comments, nextPage: nextPage, disabled: disabled)
}
updateToken()
if account.token.isNil || account.token!.isEmpty {
updateToken()
} else {
FeedModel.shared.onAccountChange()
}
}
func updateToken(force: Bool = false) {

View File

@ -26,7 +26,6 @@ final class PipedAPI: Service, ObservableObject, VideosAPI {
func setAccount(_ account: Account) {
self.account = account
wipeResources()
configure()
}
@ -108,8 +107,10 @@ final class PipedAPI: Service, ObservableObject, VideosAPI {
content.json.arrayValue.compactMap { self.extractUserPlaylist(from: $0) }
}
if account.token.isNil {
if account.token.isNil || account.token!.isEmpty {
updateToken()
} else {
FeedModel.shared.loadResources(force: true)
}
}

View File

@ -106,6 +106,12 @@ final class FeedModel: ObservableObject, CacheModel {
loadFeed(force: true, paginating: true)
}
func onAccountChange() {
reset()
loadResources(force: true)
calculateUnwatchedFeed()
}
func calculateUnwatchedFeed() {
guard let account = accounts.current, accounts.signedIn else { return }
let feed = cacheModel.retrieveFeed(account: account)

View File

@ -22,10 +22,6 @@ struct FeedView: View {
.onAppear {
feed.loadResources()
}
.onChange(of: accounts.current) { _ in
feed.reset()
feed.loadResources(force: true)
}
#if os(iOS)
.refreshControl { refreshControl in
feed.loadResources(force: true) {