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 } }