Files
2025-01-26 21:14:42 +00:00

64 lines
2.4 KiB
Swift

//
// SystemMessageView.swift
// Revolt
//
// Created by Angelo on 12/12/2023.
//
import Foundation
import SwiftUI
import Types
struct SystemMessageView: View {
@EnvironmentObject var viewState: ViewState
@Binding var message: Message
var body: some View {
HStack(alignment: .center) {
switch message.system! {
case .user_joined(let content):
let user = viewState.users[content.id]!
let member = viewState.channels[message.channel]!.server.flatMap { viewState.members[$0]?[user.id] }
Image(systemName: "arrow.forward")
.resizable()
.scaledToFit()
.frame(width: 16, height: 16)
Avatar(user: user, member: member, masquerade: message.masquerade, width: 24, height: 24)
Text("\(member?.nickname ?? user.display_name ?? user.username) joined")
case .message_pinned(let content):
let user = viewState.users[content.by]!
let member = viewState.channels[message.channel]!.server.flatMap { viewState.members[$0]?[user.id] }
Image(systemName: "pin.fill")
.resizable()
.scaledToFit()
.frame(width: 16, height: 16)
Avatar(user: user, member: member, masquerade: message.masquerade, width: 24, height: 24)
Text("\(member?.nickname ?? user.display_name ?? user.username) pinned a message")
case .message_unpinned(let content):
let user = viewState.users[content.by]!
let member = viewState.channels[message.channel]!.server.flatMap { viewState.members[$0]?[user.id] }
Image(systemName: "pin.slash.fill")
.resizable()
.scaledToFit()
.frame(width: 16, height: 16)
Avatar(user: user, member: member, masquerade: message.masquerade, width: 24, height: 24)
Text("\(member?.nickname ?? user.display_name ?? user.username) unpinned a message")
default:
Text("unknown")
}
}
}
}