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