Page Menu
Home
Musing Studio
Search
Configure Global Search
Log In
Files
F12142681
PostEditorModel.swift
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
2 KB
Subscribers
None
PostEditorModel.swift
View Options
import
SwiftUI
import
CoreData
enum
PostAppearance
:
String
{
case
sans
=
"OpenSans-Regular"
case
mono
=
"Hack-Regular"
case
serif
=
"Lora-Regular"
}
struct
PostEditorModel
{
@
AppStorage
(
WFDefaults
.
showAllPostsFlag
,
store
:
UserDefaults
.
shared
)
var
showAllPostsFlag
:
Bool
=
false
@
AppStorage
(
WFDefaults
.
selectedCollectionURL
,
store
:
UserDefaults
.
shared
)
var
selectedCollectionURL
:
URL
?
@
AppStorage
(
WFDefaults
.
lastDraftURL
,
store
:
UserDefaults
.
shared
)
var
lastDraftURL
:
URL
?
func
saveLastDraft
(
_
post
:
WFAPost
)
{
self
.
lastDraftURL
=
post
.
status
!=
PostStatus
.
published
.
rawValue
?
post
.
objectID
.
uriRepresentation
()
:
nil
}
func
clearLastDraft
()
{
self
.
lastDraftURL
=
nil
}
func
fetchLastDraftFromAppStorage
()
->
WFAPost
?
{
guard
let
postURL
=
lastDraftURL
else
{
return
nil
}
guard
let
post
=
fetchManagedObject
(
from
:
postURL
)
as
?
WFAPost
else
{
return
nil
}
return
post
}
func
generateNewLocalPost
(
withFont
appearance
:
Int
)
->
WFAPost
{
let
managedPost
=
WFAPost
(
context
:
LocalStorageManager
.
standard
.
container
.
viewContext
)
managedPost
.
createdDate
=
Date
()
managedPost
.
title
=
""
managedPost
.
body
=
""
managedPost
.
status
=
PostStatus
.
local
.
rawValue
managedPost
.
collectionAlias
=
WriteFreelyModel
.
shared
.
selectedCollection
?.
alias
switch
appearance
{
case
1
:
managedPost
.
appearance
=
"sans"
case
2
:
managedPost
.
appearance
=
"wrap"
default
:
managedPost
.
appearance
=
"serif"
}
if
let
languageCode
=
Locale
.
current
.
languageCode
{
managedPost
.
language
=
languageCode
managedPost
.
rtl
=
Locale
.
characterDirection
(
forLanguage
:
languageCode
)
==
.
rightToLeft
}
return
managedPost
}
func
fetchSelectedCollectionFromAppStorage
()
->
WFACollection
?
{
guard
let
collectionURL
=
selectedCollectionURL
else
{
return
nil
}
guard
let
collection
=
fetchManagedObject
(
from
:
collectionURL
)
as
?
WFACollection
else
{
return
nil
}
return
collection
}
private
func
fetchManagedObject
(
from
objectURL
:
URL
)
->
NSManagedObject
?
{
let
coordinator
=
LocalStorageManager
.
standard
.
container
.
persistentStoreCoordinator
guard
let
managedObjectID
=
coordinator
.
managedObjectID
(
forURIRepresentation
:
objectURL
)
else
{
return
nil
}
let
object
=
LocalStorageManager
.
standard
.
container
.
viewContext
.
object
(
with
:
managedObjectID
)
return
object
}
}
File Metadata
Details
Attached
Mime Type
text/x-c
Expires
Fri, Oct 10, 12:01 AM (1 d, 4 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3440930
Attached To
rWFSUI WriteFreely SwiftUI
Event Timeline
Log In to Comment