mirror of
https://github.com/Dimillian/IceCubesApp.git
synced 2024-11-25 09:41:02 +00:00
Remove external init for StatusRowView
This commit is contained in:
parent
3f2fbeeec4
commit
54768772b5
11 changed files with 44 additions and 28 deletions
|
@ -37,7 +37,7 @@ struct DisplaySettingsView: View {
|
||||||
ZStack(alignment: .top) {
|
ZStack(alignment: .top) {
|
||||||
Form {
|
Form {
|
||||||
#if !os(visionOS)
|
#if !os(visionOS)
|
||||||
StatusRowView(viewModel: previewStatusViewModel)
|
StatusRowExternalView(viewModel: previewStatusViewModel)
|
||||||
.allowsHitTesting(false)
|
.allowsHitTesting(false)
|
||||||
.opacity(0)
|
.opacity(0)
|
||||||
.hidden()
|
.hidden()
|
||||||
|
@ -85,7 +85,7 @@ struct DisplaySettingsView: View {
|
||||||
|
|
||||||
private var examplePost: some View {
|
private var examplePost: some View {
|
||||||
VStack(spacing: 0) {
|
VStack(spacing: 0) {
|
||||||
StatusRowView(viewModel: previewStatusViewModel)
|
StatusRowExternalView(viewModel: previewStatusViewModel)
|
||||||
.allowsHitTesting(false)
|
.allowsHitTesting(false)
|
||||||
.padding(.layoutPadding)
|
.padding(.layoutPadding)
|
||||||
.background(theme.primaryBackgroundColor)
|
.background(theme.primaryBackgroundColor)
|
||||||
|
|
|
@ -242,7 +242,7 @@ public struct AccountDetailView: View {
|
||||||
.listRowBackground(theme.primaryBackgroundColor)
|
.listRowBackground(theme.primaryBackgroundColor)
|
||||||
#endif
|
#endif
|
||||||
ForEach(viewModel.pinned) { status in
|
ForEach(viewModel.pinned) { status in
|
||||||
StatusRowView(viewModel: .init(status: status, client: client, routerPath: routerPath))
|
StatusRowExternalView(viewModel: .init(status: status, client: client, routerPath: routerPath))
|
||||||
}
|
}
|
||||||
Rectangle()
|
Rectangle()
|
||||||
#if os(visionOS)
|
#if os(visionOS)
|
||||||
|
|
|
@ -155,7 +155,7 @@ public struct ExploreView: View {
|
||||||
|
|
||||||
private var loadingView: some View {
|
private var loadingView: some View {
|
||||||
ForEach(Status.placeholders()) { status in
|
ForEach(Status.placeholders()) { status in
|
||||||
StatusRowView(viewModel: .init(status: status, client: client, routerPath: routerPath))
|
StatusRowExternalView(viewModel: .init(status: status, client: client, routerPath: routerPath))
|
||||||
.padding(.vertical, 8)
|
.padding(.vertical, 8)
|
||||||
.redacted(reason: .placeholder)
|
.redacted(reason: .placeholder)
|
||||||
.allowsHitTesting(false)
|
.allowsHitTesting(false)
|
||||||
|
@ -201,7 +201,7 @@ public struct ExploreView: View {
|
||||||
if !results.statuses.isEmpty, viewModel.searchScope == .all || viewModel.searchScope == .posts {
|
if !results.statuses.isEmpty, viewModel.searchScope == .all || viewModel.searchScope == .posts {
|
||||||
Section("explore.section.posts") {
|
Section("explore.section.posts") {
|
||||||
ForEach(results.statuses) { status in
|
ForEach(results.statuses) { status in
|
||||||
StatusRowView(viewModel: .init(status: status, client: client, routerPath: routerPath))
|
StatusRowExternalView(viewModel: .init(status: status, client: client, routerPath: routerPath))
|
||||||
#if !os(visionOS)
|
#if !os(visionOS)
|
||||||
.listRowBackground(theme.primaryBackgroundColor)
|
.listRowBackground(theme.primaryBackgroundColor)
|
||||||
#else
|
#else
|
||||||
|
@ -279,7 +279,7 @@ public struct ExploreView: View {
|
||||||
ForEach(viewModel.trendingStatuses
|
ForEach(viewModel.trendingStatuses
|
||||||
.prefix(upTo: viewModel.trendingStatuses.count > 3 ? 3 : viewModel.trendingStatuses.count))
|
.prefix(upTo: viewModel.trendingStatuses.count > 3 ? 3 : viewModel.trendingStatuses.count))
|
||||||
{ status in
|
{ status in
|
||||||
StatusRowView(viewModel: .init(status: status, client: client, routerPath: routerPath))
|
StatusRowExternalView(viewModel: .init(status: status, client: client, routerPath: routerPath))
|
||||||
#if !os(visionOS)
|
#if !os(visionOS)
|
||||||
.listRowBackground(theme.primaryBackgroundColor)
|
.listRowBackground(theme.primaryBackgroundColor)
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -156,17 +156,17 @@ struct NotificationRowView: View {
|
||||||
if let status = notification.status {
|
if let status = notification.status {
|
||||||
HStack {
|
HStack {
|
||||||
if type == .mention {
|
if type == .mention {
|
||||||
StatusRowView(viewModel: .init(status: status,
|
StatusRowExternalView(viewModel: .init(status: status,
|
||||||
client: client,
|
client: client,
|
||||||
routerPath: routerPath,
|
routerPath: routerPath,
|
||||||
showActions: true))
|
showActions: true))
|
||||||
.environment(\.isMediaCompact, false)
|
.environment(\.isMediaCompact, false)
|
||||||
} else {
|
} else {
|
||||||
StatusRowView(viewModel: .init(status: status,
|
StatusRowExternalView(viewModel: .init(status: status,
|
||||||
client: client,
|
client: client,
|
||||||
routerPath: routerPath,
|
routerPath: routerPath,
|
||||||
showActions: false,
|
showActions: false,
|
||||||
textDisabled: true))
|
textDisabled: true))
|
||||||
.lineLimit(4)
|
.lineLimit(4)
|
||||||
.environment(\.isMediaCompact, true)
|
.environment(\.isMediaCompact, true)
|
||||||
}
|
}
|
||||||
|
|
|
@ -155,7 +155,7 @@ public struct StatusDetailView: View {
|
||||||
|
|
||||||
private var loadingDetailView: some View {
|
private var loadingDetailView: some View {
|
||||||
ForEach(Status.placeholders()) { status in
|
ForEach(Status.placeholders()) { status in
|
||||||
StatusRowView(viewModel: .init(status: status, client: client, routerPath: routerPath))
|
StatusRowView(viewModel: .init(status: status, client: client, routerPath: routerPath), context: .timeline)
|
||||||
.redacted(reason: .placeholder)
|
.redacted(reason: .placeholder)
|
||||||
.allowsHitTesting(false)
|
.allowsHitTesting(false)
|
||||||
}
|
}
|
||||||
|
|
|
@ -129,7 +129,8 @@ extension StatusEditor {
|
||||||
StatusRowView(viewModel: .init(status: status,
|
StatusRowView(viewModel: .init(status: status,
|
||||||
client: client,
|
client: client,
|
||||||
routerPath: RouterPath(),
|
routerPath: RouterPath(),
|
||||||
showActions: false))
|
showActions: false),
|
||||||
|
context: .timeline)
|
||||||
.accessibilityLabel(status.content.asRawText)
|
.accessibilityLabel(status.content.asRawText)
|
||||||
.environment(RouterPath())
|
.environment(RouterPath())
|
||||||
.allowsHitTesting(false)
|
.allowsHitTesting(false)
|
||||||
|
|
|
@ -26,7 +26,8 @@ public struct StatusEmbeddedView: View {
|
||||||
StatusRowView(viewModel: .init(status: status,
|
StatusRowView(viewModel: .init(status: status,
|
||||||
client: client,
|
client: client,
|
||||||
routerPath: routerPath,
|
routerPath: routerPath,
|
||||||
showActions: false))
|
showActions: false),
|
||||||
|
context: .timeline)
|
||||||
.accessibilityLabel(status.content.asRawText)
|
.accessibilityLabel(status.content.asRawText)
|
||||||
.environment(\.isCompact, true)
|
.environment(\.isCompact, true)
|
||||||
.environment(\.isMediaCompact, true)
|
.environment(\.isMediaCompact, true)
|
||||||
|
|
|
@ -29,7 +29,8 @@ public struct StatusesListView<Fetcher>: View where Fetcher: StatusesFetcher {
|
||||||
switch fetcher.statusesState {
|
switch fetcher.statusesState {
|
||||||
case .loading:
|
case .loading:
|
||||||
ForEach(Status.placeholders()) { status in
|
ForEach(Status.placeholders()) { status in
|
||||||
StatusRowView(viewModel: .init(status: status, client: client, routerPath: routerPath))
|
StatusRowView(viewModel: .init(status: status, client: client, routerPath: routerPath),
|
||||||
|
context: .timeline)
|
||||||
.redacted(reason: .placeholder)
|
.redacted(reason: .placeholder)
|
||||||
.allowsHitTesting(false)
|
.allowsHitTesting(false)
|
||||||
}
|
}
|
||||||
|
@ -48,7 +49,8 @@ public struct StatusesListView<Fetcher>: View where Fetcher: StatusesFetcher {
|
||||||
StatusRowView(viewModel: StatusRowViewModel(status: status,
|
StatusRowView(viewModel: StatusRowViewModel(status: status,
|
||||||
client: client,
|
client: client,
|
||||||
routerPath: routerPath,
|
routerPath: routerPath,
|
||||||
isRemote: isRemote))
|
isRemote: isRemote),
|
||||||
|
context: .timeline)
|
||||||
.onAppear {
|
.onAppear {
|
||||||
fetcher.statusDidAppear(status: status)
|
fetcher.statusDidAppear(status: status)
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
import SwiftUI
|
||||||
|
|
||||||
|
public struct StatusRowExternalView: View {
|
||||||
|
@State private var viewModel: StatusRowViewModel
|
||||||
|
private let context: StatusRowView.Context
|
||||||
|
|
||||||
|
public init(viewModel: StatusRowViewModel, context: StatusRowView.Context = .timeline) {
|
||||||
|
_viewModel = .init(initialValue: viewModel)
|
||||||
|
self.context = context
|
||||||
|
}
|
||||||
|
|
||||||
|
public var body: some View {
|
||||||
|
StatusRowView(viewModel: viewModel, context: context)
|
||||||
|
}
|
||||||
|
}
|
|
@ -23,17 +23,13 @@ public struct StatusRowView: View {
|
||||||
@Environment(Theme.self) private var theme
|
@Environment(Theme.self) private var theme
|
||||||
@Environment(Client.self) private var client
|
@Environment(Client.self) private var client
|
||||||
|
|
||||||
@State private var viewModel: StatusRowViewModel
|
|
||||||
@State private var showSelectableText: Bool = false
|
@State private var showSelectableText: Bool = false
|
||||||
@State private var isBlockConfirmationPresented = false
|
@State private var isBlockConfirmationPresented = false
|
||||||
|
|
||||||
public enum Context { case timeline, detail }
|
public enum Context { case timeline, detail }
|
||||||
private let context: Context
|
|
||||||
|
@State public var viewModel: StatusRowViewModel
|
||||||
public init(viewModel: StatusRowViewModel, context: Context = .timeline) {
|
public let context: Context
|
||||||
_viewModel = .init(initialValue: viewModel)
|
|
||||||
self.context = context
|
|
||||||
}
|
|
||||||
|
|
||||||
var contextMenu: some View {
|
var contextMenu: some View {
|
||||||
StatusRowContextMenu(viewModel: viewModel,
|
StatusRowContextMenu(viewModel: viewModel,
|
||||||
|
@ -42,6 +38,7 @@ public struct StatusRowView: View {
|
||||||
}
|
}
|
||||||
|
|
||||||
public var body: some View {
|
public var body: some View {
|
||||||
|
let _ = Self._printChanges()
|
||||||
HStack(spacing: 0) {
|
HStack(spacing: 0) {
|
||||||
if !isCompact {
|
if !isCompact {
|
||||||
HStack(spacing: 3) {
|
HStack(spacing: 3) {
|
||||||
|
|
|
@ -104,7 +104,7 @@ struct StatusRowContextMenu: View {
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
let view = HStack {
|
let view = HStack {
|
||||||
StatusRowView(viewModel: viewModel)
|
StatusRowView(viewModel: viewModel, context: .timeline)
|
||||||
.padding(16)
|
.padding(16)
|
||||||
}
|
}
|
||||||
.environment(\.isInCaptureMode, true)
|
.environment(\.isInCaptureMode, true)
|
||||||
|
|
Loading…
Reference in a new issue