Ferrite-backup/Ferrite/Views/ComponentViews/Settings/SettingsLogView.swift
kingbri d2d7d7364f Logging: Add exportability to logs
Logs can be exported into their own files. I'm still debating on
writing a continuous stream to a logfile that persists on app
crashes.

Also make the show error toasts toggle only apply to generic errors
and not customized error toasts.

Signed-off-by: kingbri <bdashore3@proton.me>
2023-03-10 15:01:00 -05:00

69 lines
2.2 KiB
Swift

//
// SettingsLogView.swift
// Ferrite
//
// Created by Brian Dashore on 3/8/23.
//
import SwiftUI
struct SettingsLogView: View {
@EnvironmentObject var logManager: LoggingManager
var body: some View {
NavView {
List {
ForEach($logManager.messageArray, id: \.self) { $log in
Text(log.toMessage())
.font(.caption)
.foregroundColor(.secondary)
.lineLimit(log.isExpanded ? nil : 5)
.onTapGesture {
log.isExpanded.toggle()
}
}
}
.listStyle(.plain)
.backport.alert(
isPresented: $logManager.showLogExportedAlert,
title: "Success",
message: "Log successfully exported in Ferrite's logs folder"
)
.navigationTitle("Logs")
.navigationBarTitleDisplayMode(.inline)
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
Menu {
Button {
logManager.exportLogs()
} label: {
Label("Export", systemImage: "square.and.arrow.up")
}
if #available(iOS 15, *) {
Button(role: .destructive) {
logManager.messageArray = []
} label: {
Label("Clear session logs", systemImage: "trash")
}
} else {
Button {
logManager.messageArray = []
} label: {
Label("Clear session logs", systemImage: "trash")
}
}
} label: {
Image(systemName: "ellipsis")
}
}
}
}
}
}
struct SettingsLogView_Previews: PreviewProvider {
static var previews: some View {
SettingsLogView()
}
}