Dreamine.Web 1.0.0.0
WPF와 Blazor를 한 코드 흐름으로 연결하고 반복적인 MVVM 코드를 줄이는 오픈소스 FullKit 공식 웹 애플리케이션입니다.
로딩중...
검색중...
일치하는것 없음
SiteSettingsService.cs
이 파일의 문서화 페이지로 가기
1using System.IO;
2using System.Text.Json;
4
6
16{
34 private readonly string _filePath;
35
44 private static readonly JsonSerializerOptions _json = new() { WriteIndented = true };
45
55
73 {
74 _filePath = Path.Combine(opts.ResolvedDataPath, "site_settings.json");
75
76 var defaults = DefaultFrom(opts);
77 if (File.Exists(_filePath))
78 {
79 try
80 {
81 var loaded = JsonSerializer.Deserialize<SiteSettings>(File.ReadAllText(_filePath));
82 if (loaded is null)
83 {
84 _settings = defaults;
85 }
86 else
87 {
88 // 저장된 파일에 없는 필드는 기본값으로 채움
89 loaded.OgImageUrl = string.IsNullOrEmpty(loaded.OgImageUrl) ? defaults.OgImageUrl : loaded.OgImageUrl;
90 loaded.OgSiteName = string.IsNullOrEmpty(loaded.OgSiteName) ? defaults.OgSiteName : loaded.OgSiteName;
91 loaded.OgUrl = string.IsNullOrEmpty(loaded.OgUrl) ? defaults.OgUrl : loaded.OgUrl;
92 loaded.TwitterCard = string.IsNullOrEmpty(loaded.TwitterCard) ? defaults.TwitterCard : loaded.TwitterCard;
93 _settings = loaded;
94 }
95 }
96 catch { _settings = defaults; }
97 }
98 else
99 {
100 _settings = defaults;
101 }
102 }
103
128 public async Task SaveAsync(SiteSettings settings)
129 {
130 _settings = settings;
131 Directory.CreateDirectory(Path.GetDirectoryName(_filePath)!);
132 await File.WriteAllTextAsync(_filePath, JsonSerializer.Serialize(settings, _json));
133 }
134
159 private static SiteSettings DefaultFrom(DreamineOptions opts) => new()
160 {
161 Title = opts.SiteTitle,
162 Description = opts.SiteDescription,
163 IconUrl = string.Empty,
164 GitHubUrl = opts.GitHubOrgUrl
165 };
166}
static readonly JsonSerializerOptions _json
static SiteSettings DefaultFrom(DreamineOptions opts)
async Task SaveAsync(SiteSettings settings)