mirror of
https://github.com/Dimillian/IceCubesApp.git
synced 2024-11-29 19:51:08 +00:00
Notifications: When multiple follow, open list of users instead of just one user
This commit is contained in:
parent
9867faa6de
commit
86aad4145a
4 changed files with 22 additions and 2 deletions
|
@ -39,6 +39,8 @@ extension View {
|
||||||
AccountsListView(mode: .favoritedBy(statusId: id))
|
AccountsListView(mode: .favoritedBy(statusId: id))
|
||||||
case let .rebloggedBy(id):
|
case let .rebloggedBy(id):
|
||||||
AccountsListView(mode: .rebloggedBy(statusId: id))
|
AccountsListView(mode: .rebloggedBy(statusId: id))
|
||||||
|
case let .accountsList(accounts):
|
||||||
|
AccountsListView(mode: .accountsList(accounts: accounts))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ import SwiftUI
|
||||||
public enum AccountsListMode {
|
public enum AccountsListMode {
|
||||||
case following(accountId: String), followers(accountId: String)
|
case following(accountId: String), followers(accountId: String)
|
||||||
case favoritedBy(statusId: String), rebloggedBy(statusId: String)
|
case favoritedBy(statusId: String), rebloggedBy(statusId: String)
|
||||||
|
case accountsList(accounts: [Account])
|
||||||
|
|
||||||
var title: LocalizedStringKey {
|
var title: LocalizedStringKey {
|
||||||
switch self {
|
switch self {
|
||||||
|
@ -16,6 +17,8 @@ public enum AccountsListMode {
|
||||||
return "account.favorited-by"
|
return "account.favorited-by"
|
||||||
case .rebloggedBy:
|
case .rebloggedBy:
|
||||||
return "account.boosted-by"
|
return "account.boosted-by"
|
||||||
|
case .accountsList:
|
||||||
|
return ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -67,6 +70,9 @@ class AccountsListViewModel: ObservableObject {
|
||||||
case let .favoritedBy(statusId):
|
case let .favoritedBy(statusId):
|
||||||
(accounts, link) = try await client.getWithLink(endpoint: Statuses.favoritedBy(id: statusId,
|
(accounts, link) = try await client.getWithLink(endpoint: Statuses.favoritedBy(id: statusId,
|
||||||
maxId: nil))
|
maxId: nil))
|
||||||
|
case let .accountsList(accounts):
|
||||||
|
self.accounts = accounts
|
||||||
|
link = nil
|
||||||
}
|
}
|
||||||
nextPageId = link?.maxId
|
nextPageId = link?.maxId
|
||||||
relationships = try await client.get(endpoint:
|
relationships = try await client.get(endpoint:
|
||||||
|
@ -96,6 +102,9 @@ class AccountsListViewModel: ObservableObject {
|
||||||
case let .favoritedBy(statusId):
|
case let .favoritedBy(statusId):
|
||||||
(newAccounts, link) = try await client.getWithLink(endpoint: Statuses.favoritedBy(id: statusId,
|
(newAccounts, link) = try await client.getWithLink(endpoint: Statuses.favoritedBy(id: statusId,
|
||||||
maxId: nextPageId))
|
maxId: nextPageId))
|
||||||
|
case .accountsList:
|
||||||
|
newAccounts = []
|
||||||
|
link = nil
|
||||||
}
|
}
|
||||||
accounts.append(contentsOf: newAccounts)
|
accounts.append(contentsOf: newAccounts)
|
||||||
let newRelationships: [Relationship] =
|
let newRelationships: [Relationship] =
|
||||||
|
|
|
@ -17,6 +17,7 @@ public enum RouterDestinations: Hashable {
|
||||||
case following(id: String)
|
case following(id: String)
|
||||||
case favoritedBy(id: String)
|
case favoritedBy(id: String)
|
||||||
case rebloggedBy(id: String)
|
case rebloggedBy(id: String)
|
||||||
|
case accountsList(accounts: [Account])
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum SheetDestinations: Identifiable {
|
public enum SheetDestinations: Identifiable {
|
||||||
|
|
|
@ -119,7 +119,11 @@ struct NotificationRowView: View {
|
||||||
}
|
}
|
||||||
.contentShape(Rectangle())
|
.contentShape(Rectangle())
|
||||||
.onTapGesture {
|
.onTapGesture {
|
||||||
routerPath.navigate(to: .accountDetailWithAccount(account: notification.accounts[0]))
|
if notification.accounts.count == 1 {
|
||||||
|
routerPath.navigate(to: .accountDetailWithAccount(account: notification.accounts[0]))
|
||||||
|
} else {
|
||||||
|
routerPath.navigate(to: .accountsList(accounts: notification.accounts))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -155,7 +159,11 @@ struct NotificationRowView: View {
|
||||||
}
|
}
|
||||||
.contentShape(Rectangle())
|
.contentShape(Rectangle())
|
||||||
.onTapGesture {
|
.onTapGesture {
|
||||||
routerPath.navigate(to: .accountDetailWithAccount(account: notification.accounts[0]))
|
if notification.accounts.count == 1 {
|
||||||
|
routerPath.navigate(to: .accountDetailWithAccount(account: notification.accounts[0]))
|
||||||
|
} else {
|
||||||
|
routerPath.navigate(to: .accountsList(accounts: notification.accounts))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue