Page MenuHomeMusing Studio

No OneTemporary

diff --git a/Shared/Account/AccountLogoutView.swift b/Shared/Account/AccountLogoutView.swift
index 0b2bd82..8613d6b 100644
--- a/Shared/Account/AccountLogoutView.swift
+++ b/Shared/Account/AccountLogoutView.swift
@@ -1,30 +1,59 @@
import SwiftUI
struct AccountLogoutView: View {
@EnvironmentObject var model: WriteFreelyModel
+ @Environment(\.managedObjectContext) var moc
+
+ @State private var isPresentingLogoutConfirmation: Bool = false
+ @State private var editedPostsWarningString: String = ""
var body: some View {
VStack {
Spacer()
VStack {
Text("Logged in as \(model.account.username)")
Text("on \(model.account.server)")
}
Spacer()
Button(action: logoutHandler, label: {
Text("Log Out")
})
}
+ .actionSheet(isPresented: $isPresentingLogoutConfirmation, content: {
+ ActionSheet(
+ title: Text("Log Out?"),
+ message: Text("\(editedPostsWarningString)You won't lose any local posts. Are you sure?"),
+ buttons: [
+ .destructive(Text("Log Out"), action: {
+ model.logout()
+ }),
+ .cancel()
+ ]
+ )
+ })
}
func logoutHandler() {
- model.logout()
+ let request = WFAPost.createFetchRequest()
+ request.predicate = NSPredicate(format: "status == %i", 1)
+ do {
+ let editedPosts = try LocalStorageManager.persistentContainer.viewContext.fetch(request)
+ if editedPosts.count == 1 {
+ editedPostsWarningString = "You'll lose unpublished changes to \(editedPosts.count) edited post. "
+ }
+ if editedPosts.count > 1 {
+ editedPostsWarningString = "You'll lose unpublished changes to \(editedPosts.count) edited posts. "
+ }
+ } catch {
+ print("Error: failed to fetch cached posts")
+ }
+ self.isPresentingLogoutConfirmation = true
}
}
struct AccountLogoutView_Previews: PreviewProvider {
static var previews: some View {
AccountLogoutView()
.environmentObject(WriteFreelyModel())
}
}

File Metadata

Mime Type
text/x-diff
Expires
Thu, Mar 12, 12:19 PM (20 h, 24 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3652651

Event Timeline