Compare commits
2 Commits
1f4f32c9af
...
4f31622abe
Author | SHA1 | Date | |
---|---|---|---|
|
4f31622abe | ||
|
d0685c163c |
@ -61,6 +61,14 @@ final class LocalizedPage: ChangeObservingItem {
|
||||
content.isValidIdForTagOrPageOrPost(urlComponent) &&
|
||||
!content.containsPage(withUrlComponent: urlComponent)
|
||||
}
|
||||
|
||||
func update(hasContent: Bool) -> Bool {
|
||||
if self.hasContent != hasContent {
|
||||
self.hasContent = hasContent
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -153,7 +153,9 @@ final class Page: Item, DateItem, LocalizedItem {
|
||||
guard content.storage.remove(pageContent: id, in: language) else {
|
||||
return false
|
||||
}
|
||||
localized(in: language).hasContent = false
|
||||
if localized(in: language).update(hasContent: false) {
|
||||
self.didChange()
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
@ -161,7 +163,9 @@ final class Page: Item, DateItem, LocalizedItem {
|
||||
guard content.storage.save(pageContent: pageContent, for: id, in: language) else {
|
||||
return false
|
||||
}
|
||||
localized(in: language).hasContent = true
|
||||
if localized(in: language).update(hasContent: true) {
|
||||
self.didChange()
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
@ -169,8 +173,15 @@ final class Page: Item, DateItem, LocalizedItem {
|
||||
Update the `hasContent` property of all localized pages.
|
||||
*/
|
||||
func updateContentExistence() {
|
||||
var didUpdate = false
|
||||
for language in ContentLanguage.allCases {
|
||||
localized(in: language).hasContent = content.storage.hasPageContent(for: id, language: language)
|
||||
let hasContent = content.storage.hasPageContent(for: id, language: language)
|
||||
if localized(in: language).update(hasContent: hasContent) {
|
||||
didUpdate = true
|
||||
}
|
||||
}
|
||||
if didUpdate {
|
||||
self.didChange()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -10,7 +10,7 @@ struct LabelCreationView: View {
|
||||
|
||||
var body: some View {
|
||||
List {
|
||||
ForEach($labels) { label in
|
||||
ForEach($labels, id: \.icon) { label in
|
||||
HStack {
|
||||
Button(action: { remove(label.wrappedValue) }) {
|
||||
Image(systemSymbol: .minusCircleFill)
|
||||
@ -32,13 +32,13 @@ struct LabelCreationView: View {
|
||||
}
|
||||
|
||||
private func addLabel() {
|
||||
var label = ContentLabel(icon: .statisticsTime, value: "Value")
|
||||
var number = 0
|
||||
while labels.contains(label) {
|
||||
number += 1
|
||||
label.value = "Value \(number)"
|
||||
for icon in PageIcon.allCases {
|
||||
if labels.contains(where: { $0.icon == icon }) {
|
||||
continue
|
||||
}
|
||||
labels.append(.init(icon: icon, value: "Value"))
|
||||
return
|
||||
}
|
||||
labels.append(label)
|
||||
}
|
||||
|
||||
private func remove(_ label: ContentLabel) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user