mirror of
https://github.com/Dimillian/IceCubesApp.git
synced 2024-04-29 03:08:46 +00:00
65 lines
1.9 KiB
Swift
65 lines
1.9 KiB
Swift
import DesignSystem
|
|
import EmojiText
|
|
import Env
|
|
import Models
|
|
import Network
|
|
import SwiftUI
|
|
|
|
@MainActor
|
|
public class AccountsListRowViewModel: ObservableObject {
|
|
var client: Client?
|
|
|
|
@Published var account: Account
|
|
@Published var relationShip: Relationshionship
|
|
|
|
public init(account: Account, relationShip: Relationshionship) {
|
|
self.account = account
|
|
self.relationShip = relationShip
|
|
}
|
|
}
|
|
|
|
public struct AccountsListRow: View {
|
|
@EnvironmentObject private var currentAccount: CurrentAccount
|
|
@EnvironmentObject private var routeurPath: RouterPath
|
|
@EnvironmentObject private var client: Client
|
|
|
|
@StateObject var viewModel: AccountsListRowViewModel
|
|
|
|
public init(viewModel: AccountsListRowViewModel) {
|
|
_viewModel = StateObject(wrappedValue: viewModel)
|
|
}
|
|
|
|
public var body: some View {
|
|
HStack(alignment: .top) {
|
|
AvatarView(url: viewModel.account.avatar, size: .status)
|
|
VStack(alignment: .leading, spacing: 2) {
|
|
EmojiTextApp(viewModel.account.safeDisplayName.asMarkdown, emojis: viewModel.account.emojis)
|
|
.font(.subheadline)
|
|
.fontWeight(.semibold)
|
|
Text("@\(viewModel.account.acct)")
|
|
.font(.footnote)
|
|
.foregroundColor(.gray)
|
|
EmojiTextApp(viewModel.account.note.asMarkdown, emojis: viewModel.account.emojis)
|
|
.font(.footnote)
|
|
.lineLimit(3)
|
|
.environment(\.openURL, OpenURLAction { url in
|
|
routeurPath.handle(url: url)
|
|
})
|
|
}
|
|
Spacer()
|
|
if currentAccount.account?.id != viewModel.account.id {
|
|
FollowButton(viewModel: .init(accountId: viewModel.account.id,
|
|
relationship: viewModel.relationShip,
|
|
shouldDisplayNotify: false))
|
|
}
|
|
}
|
|
.onAppear {
|
|
viewModel.client = client
|
|
}
|
|
.contentShape(Rectangle())
|
|
.onTapGesture {
|
|
routeurPath.navigate(to: .accountDetailWithAccount(account: viewModel.account))
|
|
}
|
|
}
|
|
}
|