Дизайн-система iOS < 26: чёрный фон, blur элементов, удаление SplashView
This commit is contained in:
@@ -107,6 +107,8 @@ struct ChatDetailView: View {
|
||||
.toolbar(.hidden, for: .tabBar)
|
||||
.task {
|
||||
isViewActive = true
|
||||
// Reset idle timer — user is actively viewing a chat.
|
||||
SessionManager.shared.recordUserInteraction()
|
||||
// Request user info (non-mutating, won't trigger list rebuild)
|
||||
requestUserInfoIfNeeded()
|
||||
// Delay ALL dialog mutations to let navigation transition complete.
|
||||
@@ -321,6 +323,8 @@ private extension ChatDetailView {
|
||||
}
|
||||
.onChange(of: isInputFocused) { _, focused in
|
||||
guard focused else { return }
|
||||
// User tapped the input — reset idle timer.
|
||||
SessionManager.shared.recordUserInteraction()
|
||||
Task { @MainActor in
|
||||
try? await Task.sleep(nanoseconds: 80_000_000)
|
||||
scrollToBottom(proxy: proxy, animated: true)
|
||||
@@ -585,21 +589,14 @@ private extension ChatDetailView {
|
||||
.glassEffect(.regular, in: RoundedRectangle(cornerRadius: radius, style: .continuous))
|
||||
}
|
||||
} else {
|
||||
let border = strokeColor.opacity(max(0.28, strokeOpacity))
|
||||
switch shape {
|
||||
case .capsule:
|
||||
Capsule()
|
||||
.fill(.ultraThinMaterial)
|
||||
.overlay(Capsule().stroke(border, lineWidth: 0.8))
|
||||
Capsule().fill(.ultraThinMaterial)
|
||||
case .circle:
|
||||
Circle()
|
||||
.fill(.ultraThinMaterial)
|
||||
.overlay(Circle().stroke(border, lineWidth: 0.8))
|
||||
Circle().fill(.ultraThinMaterial)
|
||||
case let .rounded(radius):
|
||||
let rounded = RoundedRectangle(cornerRadius: radius, style: .continuous)
|
||||
rounded
|
||||
RoundedRectangle(cornerRadius: radius, style: .continuous)
|
||||
.fill(.ultraThinMaterial)
|
||||
.overlay(rounded.stroke(border, lineWidth: 0.8))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -703,6 +700,8 @@ private extension ChatDetailView {
|
||||
func sendCurrentMessage() {
|
||||
let message = trimmedMessage
|
||||
guard !message.isEmpty else { return }
|
||||
// User is sending a message — reset idle timer.
|
||||
SessionManager.shared.recordUserInteraction()
|
||||
messageText = ""
|
||||
sendError = nil
|
||||
|
||||
|
||||
Reference in New Issue
Block a user