Page Menu
Home
Musing Studio
Search
Configure Global Search
Log In
Files
F13819753
CollectionListView.swift
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
3 KB
Subscribers
None
CollectionListView.swift
View Options
import
SwiftUI
struct
CollectionListView
:
View
{
@
EnvironmentObject
var
model
:
WriteFreelyModel
@
AppStorage
(
"showAllPostsFlag"
)
var
showAllPostsFlag
:
Bool
=
false
@
AppStorage
(
"selectedCollectionURL"
)
var
selectedCollectionURL
:
URL
?
@
FetchRequest
(
entity
:
WFACollection
.
entity
(),
sortDescriptors
:
[
NSSortDescriptor
(
keyPath
:
\
WFACollection
.
title
,
ascending
:
true
)]
)
var
collections
:
FetchedResults
<
WFACollection
>
var
body
:
some
View
{
List
(
selection
:
$
model
.
selectedCollection
)
{
if
model
.
account
.
isLoggedIn
{
NavigationLink
(
destination
:
PostListView
(),
isActive
:
Binding
<
Bool
>(
get
:
{
()
->
Bool
in
model
.
selectedCollection
==
nil
&&
model
.
showAllPosts
},
set
:
{
newValue
in
if
newValue
{
self
.
model
.
showAllPosts
=
true
self
.
model
.
selectedCollection
=
nil
}
else
{
// No-op
}
}
),
label
:
{
Text
(
"All Posts"
)
})
NavigationLink
(
destination
:
PostListView
(),
isActive
:
Binding
<
Bool
>(
get
:
{
()
->
Bool
in
model
.
selectedCollection
==
nil
&&
!
model
.
showAllPosts
},
set
:
{
newValue
in
if
newValue
{
self
.
model
.
showAllPosts
=
false
self
.
model
.
selectedCollection
=
nil
}
else
{
// No-op
}
}
),
label
:
{
Text
(
model
.
account
.
server
==
"https://write.as"
?
"Anonymous"
:
"Drafts"
)
})
Section
(
header
:
Text
(
"Your Blogs"
))
{
ForEach
(
collections
,
id
:
\
.
alias
)
{
collection
in
NavigationLink
(
destination
:
PostListView
(),
isActive
:
Binding
<
Bool
>(
get
:
{
()
->
Bool
in
model
.
selectedCollection
==
collection
&&
!
model
.
showAllPosts
},
set
:
{
newValue
in
if
newValue
{
self
.
model
.
showAllPosts
=
false
self
.
model
.
selectedCollection
=
collection
}
else
{
// No-op
}
}
),
label
:
{
Text
(
collection
.
title
)
}
)
}
}
}
else
{
NavigationLink
(
destination
:
PostListView
())
{
Text
(
"Drafts"
)
}
}
}
.
navigationTitle
(
model
.
account
.
isLoggedIn
?
"
\(
URL
(
string
:
model
.
account
.
server
)
?.
host
??
"WriteFreely"
)
"
:
"WriteFreely"
)
.
listStyle
(
SidebarListStyle
())
.
onChange
(
of
:
model
.
selectedCollection
)
{
collection
in
self
.
selectedCollectionURL
=
collection
?.
objectID
.
uriRepresentation
()
}
.
onChange
(
of
:
model
.
showAllPosts
)
{
value
in
self
.
showAllPostsFlag
=
model
.
showAllPosts
}
}
}
struct
CollectionListView_LoggedOutPreviews
:
PreviewProvider
{
static
var
previews
:
some
View
{
let
context
=
LocalStorageManager
.
persistentContainer
.
viewContext
let
model
=
WriteFreelyModel
()
return
CollectionListView
()
.
environment
(
\
.
managedObjectContext
,
context
)
.
environmentObject
(
model
)
}
}
File Metadata
Details
Attached
Mime Type
text/x-c
Expires
Mon, Feb 16, 4:35 AM (1 d, 14 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3629220
Attached To
rWFSUI WriteFreely SwiftUI
Event Timeline
Log In to Comment