60 lines
1.5 KiB
Swift
60 lines
1.5 KiB
Swift
import Foundation
|
|
|
|
final class LocalizedPostSettings: ObservableObject {
|
|
|
|
/// The page title for the post feed
|
|
@Published
|
|
var title: String
|
|
|
|
/// The page description for the post feed
|
|
@Published
|
|
var description: String
|
|
|
|
/// The path to the feed in the final website, appended with the page number
|
|
@Published
|
|
var feedUrlPrefix: String
|
|
|
|
/**
|
|
The text to display when linking to a page
|
|
|
|
Each post may define a custom text.
|
|
*/
|
|
@Published
|
|
var defaultPageLinkText: String
|
|
|
|
init(title: String, description: String, feedUrlPrefix: String, defaultPageLinkText: String) {
|
|
self.title = title
|
|
self.description = description
|
|
self.feedUrlPrefix = feedUrlPrefix
|
|
self.defaultPageLinkText = defaultPageLinkText
|
|
}
|
|
}
|
|
|
|
// MARK: Storage
|
|
|
|
extension LocalizedPostSettings {
|
|
|
|
convenience init(data: Data) {
|
|
self.init(
|
|
title: data.feedTitle,
|
|
description: data.feedDescription,
|
|
feedUrlPrefix: data.feedUrlPrefix,
|
|
defaultPageLinkText: data.defaultPageLinkText)
|
|
}
|
|
|
|
var data: Data {
|
|
.init(
|
|
feedTitle: title,
|
|
feedDescription: description,
|
|
feedUrlPrefix: feedUrlPrefix,
|
|
defaultPageLinkText: defaultPageLinkText)
|
|
}
|
|
|
|
struct Data: Codable {
|
|
let feedTitle: String
|
|
let feedDescription: String
|
|
let feedUrlPrefix: String
|
|
let defaultPageLinkText: String
|
|
}
|
|
}
|