Ferrite-backup/Ferrite/Views/SettingsViews/SettingsAppVersionView.swift
kingbri 664c57b751 Ferrite: Add updater
Updates are sent via an alert on starting the app. This can be
disabled in the settings menu.

A full version struct has been completed for flexible comparisons.

Version history can also be viewed in settings in case a user wants
to download an earlier version of the app.

Updates track Github releases.

Signed-off-by: kingbri <bdashore3@gmail.com>
2022-08-31 18:47:02 -04:00

50 lines
1.4 KiB
Swift

//
// SettingsAppVersionView.swift
// Ferrite
//
// Created by Brian Dashore on 8/29/22.
//
import SwiftUI
struct SettingsAppVersionView: View {
@EnvironmentObject var toastModel: ToastViewModel
@State private var viewTask: Task<Void, Never>?
@State private var releases: [GithubRelease] = []
var body: some View {
List {
Section(header: Text("GitHub links")) {
ForEach(releases, id: \.self) { release in
ListRowLinkView(text: release.tagName, link: release.htmlUrl)
}
}
}
.onAppear {
viewTask = Task {
do {
if let fetchedReleases = try await Github().fetchReleases() {
releases = fetchedReleases
} else {
toastModel.updateToastDescription("Github error: No releases found")
}
} catch {
toastModel.updateToastDescription("Github error: \(error)")
}
}
}
.onDisappear {
viewTask?.cancel()
}
.listStyle(.insetGrouped)
.navigationTitle("Version history")
.navigationBarTitleDisplayMode(.inline)
}
}
struct SettingsAppVersionView_Previews: PreviewProvider {
static var previews: some View {
SettingsAppVersionView()
}
}